我正在提取像这样的压缩文件
ZipFile.ExtractToDirectory(zipFile, extractTo);但我得到了一个
{"Could not find a part of the path 'C:\\....many subfolders\\Extremely long filename'."}zip文件包含一个具有非常长路径的文件,文件名为c.a。共280个字符。我不确定这是否是我启用了长路径的问题,如这里所演示的,https://blogs.msdn.microsoft.com/jeremykuhne/2016/07/30/net-4-6-2-and-long-paths-on-windows-10/
如果我在资源管理器中打开路径,它将打开,但是带有长文件名的文件不在那里。如果我打开zip文件,文件就在那里,所以使用长文件名提取文件似乎有问题。
在压缩提取过程中是否可以跳过文件,或者允许使用长文件名提取文件?
发布于 2018-03-08 16:19:27
using (ZipArchive archive = ZipFile.OpenRead(zipPath))
{
foreach (ZipArchiveEntry entry in archive.Entries)
{
if (entry.FullName.Length > 280)
continue;
entry.ExtractToFile(Path.Combine("your path", entry.FullName));
}
} ZipFile.OpenRead将允许您检查zip文件的内容。然后,您可以通过.Entries属性枚举以查找存档中的所有文件,并决定是否要根据文件名长度进行提取。
发布于 2018-03-08 16:44:11
如果使用的是基于Windows的文件系统,则文件名的最大长度为255个字符。注意:在计算文件名长度时,文件夹路径包含在文件名中。如果您有一个很长的文件夹路径,那么您可能需要尝试解压到c:\temp,它只使用7个字符。这样,您就可以使用248个字符。如果您的文件名比存档中的文件名长,您可能需要先解决这个问题,这样您就不必从解压缩中排除文件。
https://msdn.microsoft.com/en-us/library/windows/desktop/ee681827(v=vs.85).aspx
fat.htm
Maximum filename length in NTFS (Windows XP and Windows Vista)?
https://stackoverflow.com/questions/49177684
复制相似问题