- android - RelativeLayout 背景可绘制重叠内容
- android - 如何链接 cpufeatures lib 以获取 native android 库?
- java - OnItemClickListener 不起作用,但 OnLongItemClickListener 在自定义 ListView 中起作用
- java - Android 文件转字符串
当我递归浏览一些文件夹和文件时,我遇到了这个错误:
指定的路径、文件名或两者都太长。完全限定文件名必须少于 260 个字符,目录名必须少于 248 个字符。
这是我的功能
private void ProcessDirectory(DirectoryInfo di)
{
try
{
DirectoryInfo[] diArr = di.GetDirectories();
foreach (DirectoryInfo directoryInfo in diArr)
{
if (StopCheck)
return;
ProcessDirectory(directoryInfo);
}
ProcessFile(di);
}
catch (Exception e)
{
listBoxError.Items.Add(e.Message);
}
TextBoxCurrentFolder.Text = di.ToString();
}
我不能缩短目录名称,因为我也不允许...我该如何解决这个问题?
添加:这是另一个函数:
private void ProcessFile(DirectoryInfo di)
{
try
{
FileInfo[] fileInfo = di.GetFiles();
if (fileInfo.LongLength != 0)
{
foreach (FileInfo info in fileInfo)
{
Size += info.Length;
CountFile++;
}
}
}
catch (Exception e)
{
listBoxError.Items.Add(e.Message);
}
}
编辑在他使用 Zeta Long Paths 的地方找到了这个: How can I use FileInfo class, avoiding PathTooLongException?
已经实现了,现在我要让程序运行一整夜,看看它是否有效。
编辑昨天使用了 ZetaLongPath,效果很好!它甚至遍历了需要权限访问的文件夹。
编辑我没有使用 zetalongPath,而是使用了 Delimon.Win32.IO.dll,我认为它更好。它具有与 Win32 相同的界面。
最佳答案
这里有关于前面提到的 Delimon 库的更多信息。它是 Microsoft TechNet 上一个基于 .NET Framework 4 的库,用于克服长文件名问题:
Delimon.Win32.IO Library (V4.0) 。
它有自己版本的 System.IO 关键方法。例如,您将替换:
System.IO.Directory.GetFiles
与
Delimon.Win32.IO.Directory.GetFiles
这将使您能够处理长文件和文件夹。
来自网站:
Delimon.Win32.IO replaces basic file functions of System.IO and supports File & Folder names up to up to 32,767 Characters.
This Library is written on .NET Framework 4.0 and can be used either on x86 & x64 systems. The File & Folder limitations of the standard System.IO namespace can work with files that have 260 characters in a filename and 240 characters in a folder name (MAX_PATH is usually configured as 260 characters). Typically you run into the System.IO.PathTooLongException Error with the Standard .NET Library.
关于C# 如何解决使用 DirectoryInfo 时的限制?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9584081/
K:\test 中存在空目录“New Folder” >$a = gci K:\test目录不应具有 Length 属性。让我们检查: [bool]($a.PSobject.Properties.Na
如何将新目录添加到列表中 public static List Directory = new List(); Directory.Add("C:\\test"); // error 'string
这一定很愚蠢,但我就是不明白。所以我有这段代码: var dir = new DirectoryInfo("somedir"); if (dir.Exists) { dir.Delete(tru
我遇到了奇怪的事情。 每当我尝试在代码中创建DirectoryInfo对象并将其传递给根驱动器(C:)时,该对象的Name属性都设置为“ Debug”,并且Parent设置为{bin}文件夹。 我不经
我正在使用 Dictionary,使用 DirectoryInfo 和 FileInfo 等对象作为键。以这种方式使用它们安全吗?如何确保可以通过这种方式安全地使用对象类型? 最佳答案 一般来说,要准
我正在使用 DirectoryInfo.GetDirectories()递归查找给定路径下的所有子目录。 但是,我想排除 System 文件夹,并且没有明确的方法。 在 FindFirstFile/F
我有一个应用程序,它必须枚举一些文件夹并处理其中的文件。 它必须支持恢复,这意味着它必须从上次处理的文件夹开始。 我正在考虑使用 the DirectoryInfo.EnumerateDirector
我在以下代码段中遇到行为差异 DirectoryInfo di = new DirectoryInfo("c:\"); FileInfo[] textFiles = di.GetFiles("log_
我正在尝试查询文件夹并仅返回具有数字文件夹名称的文件夹。问题是我需要在 DirectoryInfo[] 对象中使用它。 我可以这样做(而且有效): List subDirList = Director
关闭。这个问题不符合Stack Overflow guidelines .它目前不接受答案。 要求提供代码的问题必须表现出对所解决问题的最低限度理解。包括尝试过的解决方案、为什么它们不起作用,以及预
我还是 C# 的新手...我正在构建一个 WPF 应用程序,我正在尝试应用一些用户应用程序设置。插入标准应用程序设置(int、double、string 等)很容易。我什至插入了 WindowStat
我想阅读文件夹和文件名,它们被放入一个列表中,并排序显示例如,我有一个如下所示的文件: 1-4999.txt 5000-9999.txt…… 我想对数据文件夹进行排序 var endpa
在我问的问题中Retrieve a list of filenames in folder and all subfolders quickly还有一些我发现的,似乎搜索许多文件的方法是使用 Enum
我正在使用 DirectoryInfo.CreationTime 来获取目录的创建日期但是它返回奇怪的日期 {21/11/1617 0:00:00} var directoryInfo = new D
如果我声明的目录不存在或已更改,DirectoryInfo 如何知道在哪里创建新目录?因为 Create() 方法不带参数。 像 Directory.CreateDirectory(path),其中路
我已经搜索了大约一个小时,但还是找不到解决我问题的方法。除了以“_days.txt”结尾的文件之外,我正在尝试显示某个目录中的所有 .txt 文件。这是我的代码,希望你能有所帮助。谢谢! foreac
我有以下代码可以正常工作。我想要做的(一次)是检查目录是否存在,如果存在,我想检查文件夹中是否存在文件。如果是,则返回 Y,否则返回 N: string s = new DirectoryInfo("
我正在测试以查看 DirectoryInfo[] 是否包含目录我的代码在下面 DirectoryInfo[] test = dir.GetDirectories(); if(test.Contains
我只是用我自己的文件夹浏览器做一些试验。我注意到当我查看 Windows 7 中的 System32 文件夹时,我得到了一些奇怪的结果。这是代码: DataTable dt=new DataTable
当我递归浏览一些文件夹和文件时,我遇到了这个错误: 指定的路径、文件名或两者都太长。完全限定文件名必须少于 260 个字符,目录名必须少于 248 个字符。 这是我的功能 private void P
我是一名优秀的程序员,十分优秀!