我的控制台应用程序在运行时会以某种方式创建空(0字节)Zip文件。但是如果我设置断点,并使用F10遍历打包功能,则会正常创建zip。
这两种计算机上的行为是一样的,我已经尝试过使用DotNetZip和SharpZipLib来解压缩。
压缩功能(使用System.IO.Packaging)如下:
private static void CreateModVersionZip(string path, string zipname)
{
using (Package zip = System.IO.Packaging.Package.Open(zipname, FileMode.OpenOrCreate))
{
string destFilename = ".\\mods\\" + Path.GetFileName(path);
Uri uri = PackUriHelper.CreatePartUri(new Uri(destFilename, UriKind.Relative));
if (zip.PartExists(uri))
{
zip.DeletePart(uri);
}
PackagePart part = zip.CreatePart(uri, "", CompressionOption.Normal);
using (FileStream fileStream = new FileStream(path, FileMode.Open, FileAccess.Read))
{
using (Stream dest = part.GetStream())
{
CopyStream(fileStream, dest);
}
}
}
}
如何使其正常工作?
如果您需要,我可以为SharpZipLib和DotNetZip提供压缩片段。
答案 0 :(得分:0)
我的代码没有问题,我在另一个地方发现了我的问题,我将文件发送到FTP。我使用了CodeProject的代码片段,看起来作者在打开文件时遇到了一个小错误(该方法重新创建了文件而不是打开)。