こんにちは!エンジニアの中沢です。
C#にはファイルを削除するための「Deleteメソッド」があります。
Deleteメソッドはそのままでは読み取り専用のファイルを削除することができませんが、読み取り専用の属性を外すことで削除できるようになります。
この記事では、
・ファイルを削除するDeleteメソッドとは
・Deleteメソッドの使い方
という基本的な内容から、
・読み取り専用ファイルを強制削除する方法
・FileInfoクラスのDeleteメソッドの使い方
などの応用的な使い方に関しても解説していきます。
今回はこれらの方法を覚えるために、Deleteメソッドのさまざまな使い方をわかりやすく解説します!
ファイルを削除するDeleteメソッドとは
Deleteメソッドはファイルを削除するときに使います。
Deleteメソッドは「Fileクラス」と「FileInfoクラス」で用意されていますが、その違いは「Fileクラス」が静的メソッドで、「FileInfoクラス」がインスタンスメソッドだということです。
Deleteメソッドでファイルを削除するときには、ごみ箱に入らずに直接削除されるので注意が必要です。
また、読み取り専用の属性が設定されているファイルもそのままでは削除できませんが、この記事では読み取り専用の属性を解除して削除する方法を解説しているのでぜひ確認してください。
FileクラスのDeleteメソッドの使い方
FileクラスのDeleteメソッドは引数に削除したいファイルのパスを指定することで使用できます。
次のプログラムで確認してみましょう。
using System; using System.IO; namespace Sample { class Sample { static void Main() { File.Delete(@"E:\samurai.txt"); Console.WriteLine("ファイルが削除されました"); Console.ReadKey(); } } }
実行結果:
ファイルが削除されました
このようにしてファイルを削除することができました。
FileInfoクラスのDeleteメソッドの使い方
FileInfoクラスのDeleteメソッドは、コンストラクタの引数に削除したいファイルのパスを指定することで使用できます。
次のプログラムで確認してみましょう。
using System; using System.IO; namespace Sample { class Sample { static void Main() { FileInfo file = new FileInfo(@"E:\samurai.txt"); file.Delete(); Console.WriteLine("ファイルが削除されました"); Console.ReadKey(); } } }
実行結果:
ファイルが削除されました
このようにしてファイルを削除することができました。
読み取り専用ファイルを強制削除する方法
読み取り専用ファイルを削除するには、読み取り専用の属性解除する必要があります。
読み取り専用の属性を解除して、強制的に削除する方法を次のプログラムで確認してみましょう。
using System; using System.IO; namespace Sample { class Sample { static void Main() { FileInfo file = new FileInfo(@"E:\samurai.txt"); if ((file.Attributes & FileAttributes.ReadOnly) == FileAttributes.ReadOnly) { file.Attributes = FileAttributes.Normal; } file.Delete(); Console.WriteLine("ファイルが削除されました"); Console.ReadKey(); } } }
実行結果:
ファイルが削除されました
このプログラムでは、ファイルに読み取り専用の属性があるかを確認して、読み取り専用の場合はその属性を解除してから削除を行っています。
まとめ
いかがでしたか?
今回はDeleteメソッドでファイルを削除する方法を解説しました。
読み取り専用のファイルはそのままでは削除できないので注意してくださいね。
もし、Deleteメソッドの使い方を忘れてしまったらこの記事を確認してください!