В C# я получаю исключение System.IO.DirectoryNotFoundException только для указанного c пути к файлу - PullRequest
0 голосов
/ 09 марта 2020

У меня есть следующий код в C#:

FileInfo file = new System.IO.FileInfo(filePathAndName);
file.Directory.Create();
File.WriteAllText(filePathAndName, headers + singleOption.Value);

Когда имя файла

D:\Option Data\DiscountOptionData\Single Option Files\NUL\NUL2008-09-20p32.50.csv

, тогда оно генерирует исключение System.IO.DirectoryNotFoundException. Фактически, любой с NUL в них выдает исключение.

Но любые другие имена файлов, которые я использую, такие как

D:\Option Data\DiscountOptionData\Single Option Files\NSI\NSI2006-06-17c50.002006-02-09.csv

не выбрасывать исключения.

Соответствующие части имени файла считываются из файла Excel. Я попытался использовать LEN([Cell]) для них и не могу найти скрытых символов.

1 Ответ

0 голосов
/ 09 марта 2020

Вы, вероятно, не должны использовать nul (или con или prn) для имен файлов, так как они * считаются специальными устройствами windows. Вы можете увидеть это, если откроете окно cmd и введете type nul:

c:\pax> type nul
c:\pax> type nulx
The system cannot find the file specified.

На самом деле, оно даже ведет себя неправильно с расширением. Однажды у меня был исходный файл const.h, который я переименовал в con.h, а затем потратил немного времени на размышления о том, почему мой код не компилируется. Оказывается, потому что я использовал #include "con.h", Windows услужливо открыл консольное устройство, чтобы прочитать мой заголовочный файл.

Другими словами, он ждал, когда я наберу его :-)


Если вы должны иметь иерархию каталогов, в которой хранятся файлы NUL*.csv, одним из решений является использование префикса, обеспечивающего отсутствие специальных имен устройств, например:

D:\OptnData\DscntOptnData\SnglOptnFls\dirNUL\NUL2008-09-20p32.50.csv
                                      ^^^^^^
                                     This bit
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...