首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >C#代码中的PathTooLongException

C#代码中的PathTooLongException
EN

Stack Overflow用户
提问于 2009-07-06 15:17:14
回答 4查看 8.6K关注 0票数 2

我有以下代码:

代码语言:javascript
复制
 public static void Serialize()
    {

        List<string> dirs = FileHelper.GetFilesRecursive(fileDirectoryPath);
        List<string> dirFiles = new List<string>();
        foreach (string p in dirs)
        {
            string path = p;

            string lastAccessTime = File.GetLastAccessTime(path).ToString();


            bool DirFile = File.Exists(path);
            FileInfo fInf = new FileInfo(path);
            long lengthInk = fInf.Length / 1024;

            DateTime lastWriteTime = File.GetLastWriteTime(p);
            dirFiles.Add(p + "|" + lastAccessTime.ToString() + "|" + DirFile.ToString() + "|" + lastWriteTime.ToString() + "|" + lengthInk.ToString() + " kb");


        }

我一直使用下面的代码行遇到一个PathTooLongException错误:

代码语言:javascript
复制
string lastAccessTime = File.GetLastAccessTime(path).ToString();

该应用程序钻取到驱动器中,并找到驱动器中的所有文件/文件夹。我不能改变这个路径,但由于它是260以上的characters...how来解决这个问题?

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2009-07-06 15:27:07

带有完整路径的GetLastAccessTime()调用可以对完全限定的文件路径的最大长度执行exceed the internal limit (这是操作系统版本特定的,但通常是260个字符)。

避免这种情况的一种方法是使用Directory.SetCurrentDirectory()更改当前系统目录,然后只使用相对路径调用GetLastAccessTime()。只需确保将当前目录更改回开始时的位置,以避免意外的问题。

票数 4
EN

Stack Overflow用户

发布于 2013-02-16 13:58:49

像Delimon.Win32.IO.FileInfo的.LastAccessTime属性这样的东西可能可以做到这一点。

Delimon是微软TechNet上的一个库,用于克服长文件名的问题,名为,它有自己的来自System.IO的关键类版本

例如,您可以替换:

代码语言:javascript
复制
System.IO.Directory.GetFiles 

使用

代码语言:javascript
复制
Delimon.Win32.IO.Directory.GetFiles

它可以让你处理长文件和文件夹。

来自网站:

Dlimon.Win32.IO取代了System.IO的基本文件功能,并支持最多32,767个字符的文件和文件夹名称。

这个库是在.NET Framework4.0上编写的,可以在x86和x64系统上使用。标准System.IO命名空间的文件和文件夹限制可以处理文件名中包含260个字符、文件夹名中包含240个字符的文件(MAX_PATH通常配置为260个字符)。通常,您在使用标准.NET库时会遇到System.IO.PathTooLongException错误。

票数 2
EN

Stack Overflow用户

发布于 2009-07-06 15:19:08

.NET不支持Unicode文件路径,所以在这种情况下,我所知道的唯一选择就是使用P/Invoke (当然,除非您可以更改路径)来调用支持它们的Win32函数。您可以查看here获取有关如何使用Unicode文件路径突破260个字符限制的说明。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1087565

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档