C# DirectoryInfo FullName 和 FullPath 无法处理尾随空格,如何解决?

问题描述 投票:0回答:2
string directorypath = @"C:\Folder01\Subfolder01\Next_level_Down ";

DirectoryInfo mydirectoryinfo = new DirectoryInfo(directorypath);

当上面的代码运行时,mydirectoryinfo.FullName 和 FullPath 将切断 directorypath 中最后一个文件夹末尾的尾随空格。这似乎是一个错误?

这会导致我运行时崩溃:

DirectoryInfo[] mysubdirectories = mydirectoryinfo.GetDirectories();

因为它会抛出异常“找不到路径的一部分......”

我有一堆旧文件夹,我正在对它们进行排序和收集数据,所以我需要获取它们的 DirectoryInfo,但其中一些文件夹名称末尾有空格。我希望能够让 DirectoryInfo 处理文件夹名称末尾的空白,而不是单独传递以更正文件夹名称(这可能会破坏与这些文件夹的其他连接)。如果可以的话?

我有一个我输入到 .CSV 文件中的目录列表。在循环到实例 DirectoryInfo 并运行我的检查之前,路径被读入列表,因此无法添加更多可能有用的格式。我正在使用 .Net Framework 4.7.2

c# path formatting whitespace directoryinfo
2个回答
0
投票

对于 shell 不支持的这种非正统路径名还有什么帮助(参见 https://learn.microsoft.com/en-us/troubleshoot/windows-client/shell-experience/file-folder-name-whitespace-characters ) 在前面

\\?\
:

string directorypath = @"\\?\C:\Folder01\Subfolder01\Next_level_Down ";
DirectoryInfo mydirectoryinfo = new DirectoryInfo(directorypath);

来自文档

对于文件 I/O,路径字符串的“\?\”前缀告诉 Windows 禁用所有字符串解析并发送后面的字符串的 API 它直接到文件系统。


0
投票

我不知道你是如何创建一个在和处有空格的文件夹,但如果可能的话,添加一个反斜杠

 string directorypath = @"C:\Folder01\Subfolder01\Next_level_Down \";
 DirectoryInfo mydirectoryinfo = new DirectoryInfo(directorypath);

如果您的真实路径类似于上面的代码,请删除空格或反斜杠。我认为不可能创建一个末尾有空格的目录,为什么要在那里放一个空格? 我想到的解决您问题的最后一个可能的方法是路径错误。中间某处是一个不正确的字符,因此将抛出此异常。 希望能帮到你

© www.soinside.com 2019 - 2024. All rights reserved.