gpt4 book ai didi

C# SharpZipLib 去除不相关的目录名

转载 作者:行者123 更新时间:2023-11-30 16:36:00 25 4
gpt4 key购买 nike

我正在使用 SharpZipLib压缩一个带有子目录的文件夹,这工作正常。我想做的是剥离第一个子文件的父目录,这样不相关的整个结构就不会被执行...

例子:

c:\a\b\c\d\e\f\g\h\file1.txt

c:\a\b\c\d\e\f\g\h\file2.txt

c:\a\b\c\d\e\f\g\h\i\file1.txt

c:\a\b\c\d\e\f\g\h\i\file2.txt

它应该是这样结束的:

file1.txt

file2.txt

i\file1.txt

i\file2.txt

我该怎么做?

这是我目前的代码:

        ZipFile zipFile = new ZipFile(destinationArchive);

zipFile.BeginUpdate();
foreach (FileInfo file in sourceFiles)
{
zipFile.Add(file.FullName);
}
zipFile.CommitUpdate();

zipFile.Close();

最佳答案

改用 ZipOutputStream:

string[] sourceFiles = new [] { @"c:\a\b\c\d\e\f\g\h\file1.txt", @"c:\a\b\c\d\e\f\g\h\i\file1.txt" };
FileStream fileStream = File.Create(@"c:\temp\test.zip");
ZipOutputStream zipOut = new ZipOutputStream(fileStream);
string baseDir = @"c:\a\b\c\d\e\f\g\h\";
foreach (var sourceFile in sourceFiles)
{
ZipEntry entry = new ZipEntry(sourceFile.Replace(baseDir,""));
zipOut.PutNextEntry(entry);

FileStream inFile = File.OpenRead(sourceFile);
byte[] buffer = new byte[8192];
int bytesRead = 0;
while ((bytesRead = inFile.Read(buffer, 0, buffer.Length)) > 0)
{
zipOut.Write(buffer,0,bytesRead);
}
zipOut.CloseEntry();
}
zipOut.Close();

关于C# SharpZipLib 去除不相关的目录名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1350653/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com