gpt4 book ai didi

c# - 我用来制作 .zip 文件的代码正确吗?

转载 作者:行者123 更新时间:2023-12-01 05:39:08 25 4
gpt4 key购买 nike

我在 C# 中使用此代码来压缩文件。我需要在 Android 应用程序 (java) 中打开这些文件:

String mp3Files = "E:\\"; 
int TrimLength = mp3Files.ToString().Length;

byte[] obuffer;
string outPath = mp3Files + "\\" + i + ".zip";
ZipOutputStream oZipStream = new ZipOutputStream(File.Create(outPath)); // create zip stream
oZipStream.SetLevel(9); // maximum compression

foreach (string Fil in ar) // for each file, generate a zipentry
{

oZipEntry = new ZipEntry(Fil.Remove(0, TrimLength));
oZipStream.PutNextEntry(oZipEntry);

if (!Fil.EndsWith(@"/")) // if a file ends with '/' its a directory
{
ostream = File.OpenRead(Fil);
obuffer = new byte[ostream.Length];
ostream.Read(obuffer, 0, obuffer.Length);
oZipStream.Write(obuffer, 0, obuffer.Length);
}
}
oZipStream.Finish();
oZipStream.Close();

我在用 java 提取这些文件时遇到问题,我想确保问题不是来自 zip 文件。那么这段代码是否正确? java可以读取这些zip吗?

我只是尝试使用 winrar 正常创建,文件提取代码给出了同样的问题..问题是“zin.getNextEntry()”始终为空:

    String zipFile = Path + FileName;


FileInputStream fin = new FileInputStream(zipFile);
ZipInputStream zin = new ZipInputStream(fin);

ZipEntry ze = null;
while ((ze = zin.getNextEntry()) != null) {
UnzipCounter++;
if (ze.isDirectory()) {
dirChecker(ze.getName());
} else {
FileOutputStream fout = new FileOutputStream(Path
+ ze.getName());
while ((Unziplength = zin.read(Unzipbuffer)) > 0) {
fout.write(Unzipbuffer, 0, Unziplength);
}
zin.closeEntry();
fout.close();

}

}
zin.close();

最佳答案

您的问题可能是由于 FileInputStream 对象的模式造成的。 This link (has C# code)规定流必须可读。尝试根据他们的建议更改您的代码。从他们的网站发布部分代码:

using (var raw = File.Open(inputFileName, FileMode.Open, FileAccess.Read))
{
using (var input= new ZipInputStream(raw))
{
ZipEntry e;
while (( e = input.GetNextEntry()) != null)
{

关于c# - 我用来制作 .zip 文件的代码正确吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7587207/

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