#c#
#c#
Вопрос:
Я пытаюсь перехватить возможные исключения FileNotFound, но по какой-то причине программа игнорирует тот факт, что файл не существует, и делает вид, что все в порядке. Он возвращает 0 с пустой строкой «file», даже если fileName — это строка, которая не соответствует ни одному файлу в каталоге.
string file;
try
{
var fileStream = new FileStream(fileName, FileMode.Open, FileAccess.Read);
using (var streamReader = new StreamReader(fileStream, Encoding.UTF8))
{
file = streamReader.ReadToEnd();
}
return 0;
}
catch (FileNotFoundException e)
{
Console.WriteLine(e);
return -1;
}
Это сводит меня с ума, хотя я со 100% уверенностью знаю, что ответ будет предельно очевидным.
Комментарии:
1. Вы уверены, что код не выдает другое исключение? Или что файл действительно не существует? Если вы используете относительный путь, вы ищете правильную папку? Во время отладки текущая папка
bin/Debug/...
. Попробуйте использоватьFile.Exists
, чтобы убедиться, что файла действительно нет, иPath.GetFullPath
проверить абсолютный путь2. Кстати, этот код можно заменить на
File.ReadAllText
. Исходный код идентичен. Конструктор StreamReader (string) также открывает поток с атрибутами доступа для чтения и совместного использования3. Для меня работает нормально. Какое значение
fileName
?4. Файл существует, если не генерируется исключение. Попробуйте
Console.WriteLine($"Found file at: {fileStream.Name}");
просмотреть полный путь к файлу, который он нашел.