Часто я обнаруживаю, что я каким-то образом взаимодействую с файлами, но после написания кода я всегда сомневаюсь, насколько он на самом деле является рустом. Проблема в том, что я не совсем уверен, как могут быть связаны действия, связанные с файлами, и, следовательно, лучший способ обработки ожиданий.
Простое решение, похоже, просто для того, чтобы поймать любые IOExceptions, брошенные кодом, и дать пользователю сообщение об ошибке "Недоступный файл", но возможно получить более мелкие сообщения об ошибках. Есть ли способ определить разницу между такими ошибками, как файл, заблокированный другой программой, и данные, нечитаемые из-за аппаратной ошибки?
Учитывая следующий код С#, как бы вы обрабатывали ошибки в удобном для пользователя (как можно более информативном) способом?
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();
}
}