我在 Android 应用程序中使用 ZipOutputStream 来打包和导出 mp3 文件。打包和导出似乎工作正常,提取文件后,它们无法播放。在输出上运行file
命令将文件类型显示为data
. 在压缩之前,文件类型被列为Audio
. 这是我用来压缩文件的代码:
protected File compressFiles(File outputFile, File... inputFiles) {
int bufferSize = 1024 * 4; // 4KB
ZipOutputStream zipOutputStream = null;
try {
OutputStream fileOutputStream = new FileOutputStream(outputFile);
zipOutputStream = new ZipOutputStream(new BufferedOutputStream(fileOutputStream));
int count = inputFiles.length;
File file = null;
for (int i = 0; i < inputFiles.length; i++) {
file = inputFiles[i];
String fileName = file.getName();
ZipEntry entry = new ZipEntry(fileName);
entry.setTime(file.lastModified());
FileInputStream inputStream = new FileInputStream(file);
BufferedInputStream bufferedInputStream = new BufferedInputStream(inputStream);
zipOutputStream.putNextEntry(entry);
byte[] buffer = new byte[bufferSize];
int bytesRead;
while ((bytesRead = bufferedInputStream.read()) != -1) {
zipOutputStream.write(buffer, 0, bytesRead);
}
zipOutputStream.closeEntry();
inputStream.close();
}
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} finally {
if (zipOutputStream != null) {
try {
zipOutputStream.finish();
// zipOutputStream.flush();
zipOutputStream.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
return outputFile;
}