我无法使用System.IO.Compression库创建zip文件,然后返回该zip文件的byte []。所以我想让该方法接受一个输入字符串 - 要压缩文件的路径 - 并且在压缩文件后返回文件的相应字节数组。目前,我可以将zip文件保存到一些已知路径,然后使用System.IO.File.ReadAllBytes(path)获取字节[]。System.IO:将zip文件转换为byte []而不保存文件
但是,如果我事先不知道该zip文件应该在哪里结束(如果有的话),我该如何做到这一点?我在解决方案的尝试如下。它似乎没有工作,因为当我尝试从字节数组重新构建zip文件时,它表示存档处于未知格式或已损坏。注意:我已经可以使用Ionic DotNetZip库进行此操作了;不过,我试图只使用System.IO库来做同样的事情。
关于如何去做这件事的任何想法?
private static byte[] CreateZipAndFindBytes(string importfile)
{
byte[] retVal = null;
using (System.IO.MemoryStream memStream = new System.IO.MemoryStream())
{
//ZipArchive(Stream, ZipArchiveMode, Boolean) //true means leave stream open
using (System.IO.Compression.ZipArchive archive = new System.IO.Compression.ZipArchive(memStream, System.IO.Compression.ZipArchiveMode.Create, true))
{
archive.CreateEntryFromFile(importfile, "test.zip"); //adds the file to the zip
}
retVal = memStream.ToArray();
}
return retVal;
}
感谢。这解决了问题。 – Porter
你知道这是否可以工作,如果该方法需要一个目录作为输入?据我所知,CreateEntryFromFile在给定目录而不是文件时不起作用 – Porter
@Porter是否有一个名为“CreateEntryFromDirectory”的方法? –