Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/331.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 当文件夹存在时,Windows 7坚持认为它不存在_C#_Windows 7_File Io - Fatal编程技术网

C# 当文件夹存在时,Windows 7坚持认为它不存在

C# 当文件夹存在时,Windows 7坚持认为它不存在,c#,windows-7,file-io,C#,Windows 7,File Io,请阅读整篇文章,因为整篇文章都是相关的 我写了这个C代码: 它打开一个硬编码目录,并递归地遍历其所有子目录。这就是它的全部功能。就这样 但是,它在特定文件夹上显示错误: 请注意,这不是初始目录。请注意,如果您遵循代码,那么它必须从Directory.GetDirectories()调用之一逻辑派生。此文件夹名称生成得不好。这是真的 它不仅是真实的,而且我可以在Explorer的GUI中导航到它: 奇怪的是,如果您导航到CMD中的文件夹,它将显示在DIR中,但是如果您在获得文件夹名称的建议之前

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

我写了这个C代码:

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

但是,它在特定文件夹上显示错误:

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

它不仅是真实的,而且我可以在Explorer的GUI中导航到它:

奇怪的是,如果您导航到CMD中的文件夹,它将显示在DIR中,但是如果您在获得文件夹名称的建议之前单击TAB,它将不允许您将CD放入其中。我想发布第三个链接,但这东西不允许我,因为我是新手


有什么好处?我认为生成此文件夹的软件使用某种低级NTFS调用。是否有方法通过编程清理这些文件夹名称,或解决此错误,以便您可以访问存在但不应该存在的文件夹?

该目录名称末尾是否有空格?看起来在你的探险家照片里有。我认为这是不允许的,一些工具可能正在修剪空白,这就是导致不匹配的原因。

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

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


因此,您可能需要下拉到以处理此问题。

我找到了一个解决方案,可以对名称进行清理,但您必须在编辑名称之前执行此操作。如果您使用ROBOCOPY复制文件,它将从文件和文件夹名称中删除非法字符。

该文件夹名称中是否有
?我想那是光标,目录名称以空格结尾。是的,我想是结尾的空格。查看第一条错误消息。空间已被缩小
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);
    }
}