我创建了一个返回文件夹大小的方法。
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
答案 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?