c# - 在 C# 中,我仅针对特定文件路径获得 System.IO.DirectoryNotFoundException
问题描述
我在 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])
在他们身上使用,找不到任何隐藏的字符。
解决方案
您可能不应该使用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
推荐阅读
- vue.js - Vue 从指令中访问“on”和“class”指令
- pointers - Cocos Creator 面向指针
- android - Nearby Connections API - 连接 N 对 1 通常会导致 STATUS_BLUETOOTH_ERROR 或连接缓慢
- java - 关于 Selenium 的问题:通过其子链接文本查找元素
- deployment - 管理员无法编辑部署权限,只有所有者可以
- r - 运行 RJDBC 包中的 JDBC() 函数时,RStudio 崩溃
- javascript - TypeScript:库函数的返回类型未知时该怎么办
- kubernetes - Kubernetes 多 Pod 通信
- excel - 将员工分配到 30 分钟的间隔
- html - CSS 我如何为所有(可变内容)引入一个“新行”,它遵循某个类的跨度?