我使用C#這個代碼的zip文件。我需要打開Android應用中這些文件(JAVA):我用來製作.zip文件的代碼是否正確?
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();
爲什麼不手動創建一個zip文件並用它測試java提取。如果那有效,那麼你的創作可能是錯誤的。 –
您是否嘗試過在WinZip或7zip中打開zip文件?它工作嗎? –
在C#中,你應該在你的一次性物品周圍使用''use'塊。 – Aren