找不到路径的一部分,但是它存在

时间:2018-09-19 11:03:53

标签: c# .net

我创建了一个返回文件夹大小的方法。

public static long GetDirectorySize(DirectoryInfo d)
    {
        long size = 0;
        // Add file sizes.
        FileInfo[] fis = d.GetFiles();
        foreach (FileInfo fi in fis)
        {
            size += fi.Length;
        }
        // Add subdirectory sizes.
        DirectoryInfo[] dis = d.GetDirectories();
        foreach (DirectoryInfo di in dis)
        {
            size += GetDirectorySize(di);
        }
        return size;
    }

它适用于常规路径,但对于(),它会抛出error: 找不到路径的一部分 path in cmd

2 个答案:

答案 0 :(得分:0)

我试图模仿您的问题:

string path = "C:\\_VSource\\VisoftApplication\\bin\\x64\\Debug\\Projekte\\Temporary\\KRUG_PETRA_WILFRIED_2\\Data\\TextureImages\\Custom\\Sanitärobjekte\\_textures\\wc-vorwand 2,025 mit nische\\Standard\\sanitary\\visoft_dekoration515\\sanitary\\visoft_dekoration515\\visoft_dekoration\\textures";

if (!Directory.Exists(path))
    Directory.CreateDirectory(path); // received an error here

这是错误:

  

指定的路径,文件名或两者都太长。充分   限定的文件名必须少于260个字符,并且   目录名称必须少于248个字符。

您可以在这里查看适用于长路径的.Net库 Zeta Long Paths

答案 1 :(得分:0)

Windows API具有许多功能,它们也具有Unicode版本,以允许使用扩展长度的路径,最大总路径长度为32,767个字符。这种类型的路径由用反斜杠分隔的组件组成,每个反斜杠最多达到GetVolumeInformation函数的lpMaximumComponentLength参数中返回的值(该值通常为255个字符)。要指定扩展长度的路径,请使用\?\前缀。例如,\?\ D:\非常长的路径。

以下帖子很好地讨论了您的主题:

How to deal with files with a name longer than 259 characters?