ファイルダウンロードコードは元のファイルよりも大きいファイルをダウンロードします

android file java unzip
ファイルダウンロードコードは元のファイルよりも大きいファイルをダウンロードします

いくつかの.zipファイルをダウンロードしていますが、それらを解凍しようとすると、「データエラー」が表示されます。 さて、ダウンロードしたファイルを見に行きましたが、元のファイルよりも大きいです。 これがエラーの理由でしょうか?

ファイルをダウンロードするコード:

URL=intent.getStringExtra("DownloadService_URL");
    FileName=intent.getStringExtra("DownloadService_FILENAME");
    Path=intent.getStringExtra("DownloadService_PATH");

    try{


    URL url = new URL(URL);
    URLConnection conexion = url.openConnection();

    conexion.connect();
    int lenghtOfFile = conexion.getContentLength();
    lenghtOfFile/=100;

    InputStream input = new BufferedInputStream(url.openStream());
    OutputStream output = new FileOutputStream(Path+FileName);

    byte data[] = new byte[1024];
    long total = 0;

    int count = 0;
    while ((count = input.read(data)) != -1) {
        output.write(data);
        total += count;

        notification.setLatestEventInfo(context, contentTitle, "Starting download " + FileName + " " + (total/lenghtOfFile), contentIntent);
        mNotificationManager.notify(1, notification);
    }


    output.flush();
    output.close();
    input.close();

UnZipのコード:

try {

            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();
            File f = new File(zipFile);
            f.delete();
            notification.setLatestEventInfo(context, contentTitle, "File successfully downloaded", contentIntent);
            mNotificationManager.notify(1, notification);

        } catch (Exception e) {

            notification.setLatestEventInfo(context, contentTitle, "Problem in downloading file ", contentIntent);
            mNotificationManager.notify(1, notification);

        }

    }

解凍プロセスは開始されますが、そのエラーのあるファイルを抽出した後に停止します。 r .zipファイルを別のファイルにしようとすると、CRC Failedエラーが発生しました。 両方の.zipファイルをwinrarでテストしました。

元のファイルサイズ:3.67mb .. ダウンロードファイルサイズ:3.93mb

  0  0


ベストアンサー

読み込むデータ量を確認せずに、常に完全なバイト配列をディスクに書き込みます。

また、パフォーマンスの観点からは、1500バイト未満(つまり、通常のイーサネットMTU)は非常に悪い考えです。Javaバッファはどうにかして下にあると思いますが、なぜリスクがあるのでしょうか。

1


タイトルとURLをコピーしました