이오닉 zip을 사용하면 기존 파일을 zip 객체에 추가하고 zip 파일을 만들 수 있습니다. 그러나 내가 작성한 zip 파일에서 바이트 []를 읽고 서버를 통해 전송한다고 생각하면 서버에 zip을 저장하기 위해 해당 바이트 []에서 zip 파일을 다시 작성해야합니다. 이것을 어떻게 성취합니까?이오닉 Zip : 바이트 []에서 Zip 파일 생성
저는 C#을 사용하고 있습니다.
이오닉 zip을 사용하면 기존 파일을 zip 객체에 추가하고 zip 파일을 만들 수 있습니다. 그러나 내가 작성한 zip 파일에서 바이트 []를 읽고 서버를 통해 전송한다고 생각하면 서버에 zip을 저장하기 위해 해당 바이트 []에서 zip 파일을 다시 작성해야합니다. 이것을 어떻게 성취합니까?이오닉 Zip : 바이트 []에서 Zip 파일 생성
저는 C#을 사용하고 있습니다.
을, 당신은 네트워크를 통해 byte[]
데이터 배열을 얻을 zip 파일에 데이터를 저장하려면? 당신은 당신이합니다 (docs 참조) 당신이있어 byte[]
에서 만든 MemoryStream
에서 ZipEntry
새를 만들 수 있습니다
byte[] data = MethodThatReceivesYourDataOverTheNet();
using (MemoryStream stream = new MemoryStream(data))
{
using (ZipFile zip = new ZipFile())
{
zip.AddEntry("name_of_the_file_in_the_arhive.bin", "base", stream);
zip.Save("example.zip");
}
}
이 아니에요 당신이 무슨 일을하는지 질문에서 정말 선택 -하지만 당신은 단지 데이터를 가져 오기 위해 다시로드 한 후 디스크에 저장 피하기 위해 노력하고 있다면, 단지 MemoryStream
에 저장합니다
byte[] data;
using (MemoryStream ms = new MemoryStream())
{
zipFile.Save(ms);
data = ms.ToArray();
}
// Do whatever with data.
또한, 다른 복사본 만들기 피하기 위해 MemoryStream.GetBuffer()
을 사용 : 내가 제대로 질문을 이해한다면
byte[] buffer;
int length;
using (MemoryStream ms = new MemoryStream())
{
zipFile.Save(ms);
buffer = ms.ToArray();
length = ms.Length;
}
// Now use buffer, but only up to "length"...
감사합니다. 그게 바로 제가 찾고 있던 것입니다. – Cannon
AddEntry는 더 이상이 생성자를 제공하지 않습니다. 스트림을 전달할 수있는 유일한 메소드는 이제 AddEntry ([fileName], [Stream])입니다. – JRodd