7

ファイルを解凍しようとしています(FTPサーバーから取得):

ZipInputStream zis = new ZipInputStream(
    new FileInputStream(zipFile));
    ZipEntry ze = zis.getNextEntry();
    while (ze != null) {
        String fileName = ze.getName();
        File newFile = new File(outputFileName+outputFolder + File.separator + fileName);
        System.out.println("file unzip : " + newFile.getAbsoluteFile());
        FileOutputStream fos = new FileOutputStream(newFile);
        int len;
        while ((len = zis.read(buffer)) > 0) {
            fos.write(buffer, 0, len);
        }
        fos.close();
        sendFile = newFile;
        ze = zis.getNextEntry();
    }
    zis.closeEntry();
    zis.close();
    System.out.println("Done");

.zipファイルにテキストファイルが1つだけあります。このコードは、私のローカルWindowsマシンで正常に機能します。ただし、ubuntuサーバーにデプロイすると、次の例外がスローされます。

java.util.zip.ZipException: invalid entry size (expected 193144 but got 193138 bytes)
at java.util.zip.ZipInputStream.readEnd(ZipInputStream.java:386)
at java.util.zip.ZipInputStream.read(ZipInputStream.java:156)
at java.io.FilterInputStream.read(FilterInputStream.java:90)

com.empress.Xsync.updater.ClientConfiguration.unZipFile(ClientConfiguration.java:246)で

手動で解凍しました。正常に動作します。元の.txtファイルのサイズは193144バイトです。

4

1 に答える 1

17

Ubuntuマシンに転送する過程でzipファイルが破損しているようです。Ubuntuマシンのコマンドラインから同じファイルを解凍して、問題が報告されるかどうかを確認してください。

ランダムに推測すると、FTP経由でZIPファイルを転送し、「バイナリ」モードではなく「ASCII」モードを使用したことになります。(FTPは6回に変換された可能性があります'\r\n'... '\n'

于 2012-10-29T13:06:46.190 に答える