gpt4 book ai didi

c# - 在 zip 中不应该使用 ICSharpCode.SharpZipLib.Zip 子文件夹

转载 作者:太空宇宙 更新时间:2023-11-03 14:03:36 29 4
gpt4 key购买 nike

我正在使用库 ICSharpCode.SharpZipLib.Zip;

我的代码如下:

  • 路径是根。 \\ALAWP\\THIS\\ACORD\\
  • 我正在将它们压缩到 ZIPDirectory

但是当它完成时,文件没有命名为 acord_combined.txt,而是名为 ACORD\acord_combined.txt

我做错了什么?

public void CleanRoot()
{
DirectoryInfo RootDi = new DirectoryInfo(FilePrep.RootDirectory);
string ZipDirectory = FilePrep.RootDirectory + "\\processed\\AceKey"+ DateTime.Now.ToString("yyyyMMdd_H;mm;ss") +".zip";

ZipOutputStream NewZipOutput = new ZipOutputStream(File.Create(ZipDirectory));

foreach (FileInfo fi in RootDi.GetFiles("acord*.*"))
{
Compress(ref NewZipOutput, fi);
//MoveFile(fi.FullName,ZipDirectory);
}

NewZipOutput.Finish();
NewZipOutput.Close();
}

public void Compress(ref ZipOutputStream ZipFolder, FileInfo fi)
{
try
{
FileStream fsFileToBeZipped = fi.OpenRead();

ZipEntry entry = new ZipEntry(fi.FullName);
ZipFolder.PutNextEntry(entry);
int size = 2048;
byte[] buffer = new byte[size];

while (true)
{
size = fsFileToBeZipped.Read(buffer, 0, buffer.Length);

if (size > 0)
ZipFolder.Write(buffer, 0, size);
else
break;
} //end while ( true )

fsFileToBeZipped.Close();

//prepare and delete file
fi.Attributes = FileAttributes.Normal;
//fi.Delete();
} //end try
catch (Exception e)
{
Console.WriteLine("Error zipping File. Error - " + e.Message);
} //end catch
}

最佳答案

你的问题就在这里

new ZipEntry(fi.FullName);

zipEntry 的参数是 zip 文件中的路径,而不是压缩数据的完整路径。通常 zip 库,如 7zip 和 SharpZip,公开了一种创建“入口路径”的方法,但写入 zip 的实际数据来自完整路径。

可能你想要的是

 new ZipEntry(Path.GetFileName(fi.fullName))

关于c# - 在 zip 中不应该使用 ICSharpCode.SharpZipLib.Zip 子文件夹,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10035039/

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