我正在提取像这样的
的zip文件TextIO.Write
但我得到了一个
ZipFile.ExtractToDirectory(zipFile, extractTo);
zip文件包含一个路径非常长且文件名为c.a的文件。总共280个字符。我不确定这是否是我启用了长路径的问题,如https://blogs.msdn.microsoft.com/jeremykuhne/2016/07/30/net-4-6-2-and-long-paths-on-windows-10/
所示如果我在资源管理器中打开路径,它会打开,但文件名长的文件不存在。如果我打开zip文件,那么文件就在那里,因此在提取具有长文件名的文件时似乎存在问题。
是否可以在zip解压缩期间跳过文件或允许提取具有长文件名的文件?
答案 0 :(得分:2)
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
属性以查找存档中的所有文件,并根据文件名长度决定是否要继续提取。
答案 1 :(得分:1)
如果您使用的是基于Windows的文件系统,则文件名的最大长度为255个字符。注意:计算文件名长度时,文件夹路径包含在文件名中。如果您有一个长文件夹路径,那么您可能想尝试解压缩到c:\ temp,它只使用7个字符。因此,您可以使用248个字符。如果文件名的长度超过归档中的文件名,则可能需要首先解决该问题,不必从提取中排除文件。
https://msdn.microsoft.com/en-us/library/windows/desktop/ee681827(v=vs.85).aspx
http://www.ntfs.com/ntfs_vs_fat.htm
Maximum filename length in NTFS (Windows XP and Windows Vista)?