0

さまざまな場所にあるファイルのリストがあります。次のコードを使用して、エラーなしで動作する zip ファイルを作成します。しかし、Extract Allを使用して Windows でファイルを解凍しようとすると、バイトが見つからないことに失敗しますが、Windows エクスプローラーで zip ファイル自体をダブルクリックすると、ファイルが表示され、個々のファイルを開くことができ、正しいファイルが含まれています。データ

       ZipOutputStream zos = new ZipOutputStream(new FileOutputStream(zipFile));
        for (File next : files)
        {
            ZipEntry zipEntry = new ZipEntry(next.getName());
            zos.putNextEntry(zipEntry);
            FileInputStream in = new FileInputStream(next);
            byte[] buf = new byte[1024];
            int len;
            while ((len = in.read(buf)) > 0)
            {
                zos.write(buf, 0, len);
            }
            zos.closeEntry();
            in.close();
        }
        zos.close();
4

1 に答える 1

-1

これは関連する場合と関連しない場合がありますが、固定バイト長を使用すると改行文字が失われる可能性があることがわかりました。

これは役立つかもしれません:

final byte[] newLine = System.getProperty(
        "line.separator").getBytes("UTF-8");

while ((line = in.readLine()) != null) 
        final byte[] buffer = line.getBytes("UTF-8");
        out.write(buffer, 0, buffer.length);
        out.write(newLine, 0, newLine.length);
}
于 2014-01-07T13:54:30.140 に答える