c# - Windows 7 坚持文件夹不存在

标签 c# windows-7 file-io

请阅读整篇文章,因为整篇文章都是相关的。

我写了这个 C# 代码:

static void DumpDir(string dir)
{
    string[] subdirs = Directory.GetDirectories(dir);
    foreach (string subdir in subdirs)
    {
        DumpDir(subdir);
    }

    string[] files = Directory.GetFiles(dir);

}

static void Main(string[] args)
{
    string startdir = @"G:\multimedia_dump";
    dirindexstart = startdir.Split('\\').Length;
    string[] dirs = Directory.GetDirectories(startdir);

    foreach (string dir in dirs)
    {
        DumpDir(dir);
    }
}

它打开一个硬编码目录,并递归地循环遍历其所有子目录。这就是它的全部作用。就是这样。

但是,它在特定文件夹上出错:

The Error

注意这不是初始目录。请注意,如果您遵循代码,它在逻辑上必须从 Directory.GetDirectories() 调用之一派生。这个文件夹名称生成得并不差劲。这是真的。

它不仅是真实的,而且我可以在资源管理器的 GUI 中导航到它:

GUI Lets Me Navigate There

奇怪的是,如果您在 CMD 中导航到该文件夹​​,它会显示在 DIR 中,但如果您按 TAB 键直到收到文件夹名称的建议,则不会让您通过 CD 进入该文件夹。我本来想发布第三个链接,但这个链接不允许我发布,因为我是新人。

什么给了?我认为生成此文件夹的软件是使用某种低级 NTFS 调用来实现的。有没有办法以编程方式清理这些文件夹名称,或者解决此错误,以便您可以访问存在但不应访问的文件夹?

最佳答案

您的路径似乎包含 |。就普通 Win32 API 而言,这是一个非法字符,但就 NT API 而言则不是。

您可以通过在路径前添加 \\?\ 来禁用某些 Win32 路径限制(例如,最大路径长度约为 260 个字符),但看起来这不包括 |.

因此您可能需要下拉至 NT APIs来处理这个问题。

关于c# - Windows 7 坚持文件夹不存在,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10438403/

相关文章:

c# - 如何刷新图片框

C# 跳过文本文件的第一行

c - OpenGL 凹凸贴图不起作用

python - Windows 上的 virtualenv 激活

python - 在 64 位 Windows 7 上安装 Trac

c - 检查文件指针是否指向有效文件的快速方法

php - 在php中尚不存在的文件夹中创建文件

C# Switch 表达式返回不同的结果

javascript - 多少毫秒后我可以确定文件是用 Xul 写入的?

javascript - 如何将值从 javascript 变量传递给 razor 变量?