在C#中,我得到了一个系统.IO.DirectoryNotFoundException仅适用于特定文件路径



我在C#中有以下代码:

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

当文件名为时

D:Option DataDiscountOptionDataSingle Option FilesNULNUL2008-09-20p32.50.csv

然后它抛出一个系统。IO.DirectoryNotFoundException。事实上,其中包含NUL的任何一个都会引发异常。

但是我使用的任何其他文件名,例如

D:Option DataDiscountOptionDataSingle Option FilesNSINSI2006-06-17c50.002006-02-09.csv

不要抛出异常。

文件名的相关部分是从excel文件中读取的。我试过在它们上使用LEN([Cell]),但找不到任何隐藏字符。

您可能不应该使用nul(或conprn(作为文件名,因为这些文件名被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:OptnDataDscntOptnDataSnglOptnFlsdirNULNUL2008-09-20p32.50.csv
^^^^^^
This bit

相关内容

  • 没有找到相关文章

最新更新