DirectoryNotFoundException, даже если файл существует - PullRequest
0 голосов
/ 30 ноября 2018

Это код:

string file = Path.Combine(Environment.CurrentDirectory, "test.txt");
if (!File.Exists(file)) {
    File.CreateText(file); // will throw always
}

using (var writer = new StreamWriter(file)) { // will throw always
    //...
}

Это выдаст DirectoryNotFoundException, если файл не существует и если он попытается создать его, и если файл существует, то он выброситDirectoryNotFoundException при попытке использовать StreamWriter.Я не верю, что этот код неправильный, поэтому я в растерянности, в чем проблема.

Обновление

Значение файла /tmp/test.txt.Да, он всегда выбрасывает, исключение составляет

System.IO.DirectoryNotFoundException : Could not find a part of the path '/tmp/test.txt'

Обновление

Перезагрузка исправила это.Я понятия не имею, почему это было вызвано, но это могла быть просто проблема IDE.

1 Ответ

0 голосов
/ 30 ноября 2018

Вы открываете файл с помощью

File.CreateText(file);

File.CreateText (String) метода

Возвращает StreamWriter StreamWriterкоторый записывает в указанный файл, используя кодировку UTF-8.

Тогда вы не закрываете его.Затем вы пытаетесь получить доступ к открытому файлу, открыв его снова

using (var writer = new StreamWriter(file))

Однако, исключение, которое вы получаете, является еще одной проблемой.При использовании StreamWriter

DirectoryNotFoundException Указанный путь недопустим (например, он находится на неподключенном диске).

Все вышеперечисленноеКроме того, я предлагаю вам сделать

string file = Path.Combine(Environment.CurrentDirectory, "test.txt");
Console.WriteLine(file);

//FileMode.Create will create or overwwrite the file
using (var fs = new FileStream(file,FileMode.Create))
   using (var writer = new StreamWriter(fs))
   { 
   }

Затем, если у вас все еще есть проблемы, перейдите в этот каталог и проверьте, есть ли файл, проверьте разрешения для каталога и файла и убедитесь, что у вас естьсоответствующий доступ.

Короче говоря, ваш код подозрительный, и вам нужно исправить его, во-вторых, вам нужно убедиться, какой файл он открывает, в-третьих, вам нужно проверить разрешения для этого файла и / или каталога

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...