Dis*_*ive 44 .net c# filesystems validation path
我想知道如何确定字符串是否是有效的文件路径.
文件路径可能存在也可能不存在.
Mat*_*hen 56
您可以使用FileInfo构造函数.如果"文件名为空,仅包含空格或包含无效字符",它将抛出ArgumentException.它也可以抛出SecurityException或UnauthorizedAccessException,如果你只关心格式,我认为你可以忽略它.
另一种选择是直接检查Path.GetInvalidPathChars.例如:
boolean possiblePath = pathString.IndexOfAny(Path.GetInvalidPathChars()) == -1;
Run Code Online (Sandbox Code Playgroud)
Ste*_*fan 22
100%准确地检查路径的字符串格式是非常困难的,因为它将取决于使用它的文件系统(如果不在同一台计算机上,则取决于网络协议).
即使在Windows甚至NTFS中,它也不简单,因为它依赖于.NET .NET在后台使用以与内核通信.
由于目前大多数文件系统都支持unicode,因此可能还需要检查所有规则以进行正确编码的unicode,规范化等.
我要做的只是进行一些基本检查,然后在使用路径后正确处理异常.有关规则,请参阅:
以下是您可能会使用的一些内容:
Path.IsPathRooted以查看它是否不是相对路径,然后使用驱动器Environment.GetLogicalDrives()来查看您的路径是否包含其中一个有效的驱动器Path.GetInvalidFileNameChars()和Path.GetInvalidPathChars()不完全重叠.您也可以使用Path.GetDirectoryName(path)和Path.GetFileName(fileName)输入您的输入名称,如果是,则会引发异常path参数包含无效字符,为空或仅包含空格.
在您尝试创建该文件之前,您无法真正确定。也许路径有效但安全设置不允许创建文件。唯一可以告诉您路径是否真的有效的实例是操作系统,那么为什么不尝试创建该文件并捕获IOException表明它无效的文件呢?以我的拙见,这是一种方法:假设输入有效,使用它,并IOException在无效时捕获一个。
| 归档时间: |
|
| 查看次数: |
68900 次 |
| 最近记录: |