何らかの方法でファイルを操作していることに気付くことがよくありますが、コードを書いた後は、実際にどれだけ壊れているのか常に確信が持てません。問題は、ファイル関連の操作がどのように失敗する可能性があるか、つまり期待を処理する最善の方法が完全にはわからないことです。
簡単な解決策は、コードによってスローされた IOExceptions をキャッチし、ユーザーに「アクセスできないファイル」エラー メッセージを表示することですが、もう少し細かいエラー メッセージを表示することは可能です。別のプログラムによってファイルがロックされているなどのエラーと、ハードウェア エラーが原因でデータが読み取れないエラーの違いを判断する方法はありますか?
次の C# コードが与えられた場合、ユーザー フレンドリーな (できるだけ有益な) 方法でエラーを処理するにはどうすればよいでしょうか?
public class IO
{
public List<string> ReadFile(string path)
{
FileInfo file = new FileInfo(path);
if (!file.Exists)
{
throw new FileNotFoundException();
}
StreamReader reader = file.OpenText();
List<string> text = new List<string>();
while (!reader.EndOfStream)
{
text.Add(reader.ReadLine());
}
reader.Close();
reader.Dispose();
return text;
}
public void WriteFile(List<string> text, string path)
{
FileInfo file = new FileInfo(path);
if (!file.Exists)
{
throw new FileNotFoundException();
}
StreamWriter writer = file.CreateText();
foreach(string line in text)
{
writer.WriteLine(line);
}
writer.Flush();
writer.Close();
writer.Dispose();
}
}