StreamReader не выдает исключение FileNotFound, даже если файла нет, и оно должно

#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}"); просмотреть полный путь к файлу, который он нашел.