c# - SquidBox SevenZipSharp 在创建 zip 时创建未命名文件夹
问题描述
我尝试压缩我放置在我的临时文件目录 (%temp%) 中的三个文件。使用 SevenZipSharp 压缩它们时,我会得到一个 zip 文件,其中包含一个未命名的文件夹。在这个文件夹中,我有我的三个文件,但我需要这些文件位于 Zip 的根目录中。我在这里错过了什么,我做错了什么?
public void ZipFiles(String[] files, String absoluteDestination)
{
List<String> createdFiles = HandleFileIgnore(files);
System.Threading.Thread.CurrentThread.CurrentCulture = System.Globalization.CultureInfo.GetCultureInfo("de-DE");
SevenZipCompressor compressor = new SevenZipCompressor(m_TempPath);
compressor.ArchiveFormat = m_outArchiveFormat; //OutArchiveFormat.Zip
compressor.PreserveDirectoryRoot = true; //False doesn't solve the problem
compressor.Compressing += CompressingProgressChanged;
int commonrootlenght = FindCommonRoot(files, m_CommonRootFolder); //if no commonRootFolder is set it will return -1
CompressFilesFromRoot(files, absoluteDestination, compressor, commonrootlenght);
RemoveCreatedFiles(createdFiles);
}
private static void CompressFilesFromRoot(String[] files, String absoluteDestination, SevenZipCompressor compressor, int commonrootlenght)
{
if (commonrootlenght < 0)
{
compressor.CompressFiles(absoluteDestination, files);
}
else
{
compressor.CompressFiles(absoluteDestination, commonrootlenght, files);
}
}
解决方案
SevenZipSharp 似乎无法处理 8.3 文件路径。我的文件夹名称是
C:\Users\XKC-ML~1\AppData\Local\Temp\ApplicationFolder
我只是用
archivePath = Path.GetFullPath(archivePath);
这就是诀窍。
编辑:错误已解决-> https://github.com/squid-box/SevenZipSharp/issues/102
推荐阅读
- python - 如何将引用返回到在 flask-sqlalchemy 中具有复合键的表?
- java - 使用从主类派生的字符串值到测试类
- python - 为什么我不能在 python 中使用'if A or B'函数得到正确的结果
- ruby-on-rails - 如何在 Rails 控制器上为 Active Storage 下载 blob URL
- amazon-web-services - AWS Application Load Balancer 是否支持 TLS 1.3?
- c++ - 如何解决链接器错误?
- android - 如何使 TEXT 字段在 android 的 SQLite 中唯一?
- c - 在 C 中使用定点的乘法结果不正确
- c++ - 关于容器的迭代器
- c# - 尝试让 Servicestack 的最新稳定版本 v5.11.0 与我们的经典 ASP.NET 应用程序一起使用