1
我在Android上創建了一個應用程序,此應用程序將活動記錄到文件中。我有一個選項來導出文件,所以我將文件保存在.zip中。如果有多個文件要添加到.zip中,則會出現以下錯誤。Android 2.3通用標誌的ZIP問題
(通用標誌 - 本地:808十六進制中央:8十六進制)。 本地和中央GPFlags值不匹配。
這隻適用於Android 2.3並使用winzip或7zip。我可以繞過這個問題使用Windows資源管理器或WinRAR,但我想解決這個問題,而不是避免它。
它不會在Android 2.2設備上使用相同的應用程序。
我周圍搜索,發現一些關於加密的意見,但我沒有加密任何東西。我也發現了一些關於更新某些庫的評論,但我使用的是Android sdk 11和java jdk 1.6.0_25。
我試過2個不同的代碼具有相同的結果
int count = log_.getLogFileList(files_);
if (count > 0)
{
String inFileName;
File inFile;
String phoneNumLast =OsmoService.getAccountString(OsmoService.context).substring(6);
long date = files_.get(count - 1).lastModified();
SimpleDateFormat formatter = new SimpleDateFormat("MMddHHmmss");
String outdt = new String(formatter.format(new Date(date)));
String outFileName = new String("Dir Name" + "//" + "PREFIX" + "_" + outdt + ZIP_SUFFIX);
File outFile = new File(outFileName);
ZipOutputStream zos = new ZipOutputStream(new FileOutputStream(outFile));
BufferedOutputStream outBS = new BufferedOutputStream(zos, 8192);
for (int idx = (count - 1); (idx >= 0) && !isCancelled(); idx--)
{
inFile = files_.get(idx);
BufferedReader inBR = new BufferedReader(new FileReader(inFile), 8192);
inFileName = inFile.getName();
Log.v(LOG_TAG, "MailLogFiles - Zipping " + inFileName);
zos.putNextEntry(new ZipEntry(inFileName));
int zix;
while ((zix = inBR.read()) != -1)
outBS.write(zix);
outBS.flush();
zos.closeEntry();
inBR.close();
}
outBS.close();
這
public static void compressFileList(String[] inFiles, String outFile)
throws IOException
{
ZipOutputStream zos = new ZipOutputStream(
new BufferedOutputStream(new FileOutputStream(outFile)));
byte data[] = new byte[2048];
for (int i = 0; i < inFiles.length; i++)
{
BufferedInputStream in = new BufferedInputStream(new FileInputStream(inFiles[i]));
zos.putNextEntry(new ZipEntry(inFiles[i]));
int count;
while((count = in.read(data, 0, data.length)) != -1)
zos.write(data, 0, count);
zos.closeEntry();
in.close();
}
zos.close();
}