簡體   English   中英

如何提高性能以讀取tar.gz文件夾中的文件?

[英]How to improve the perfomance to read the file in tar.gz folder?

我已成功讀取tar.gz格式的文件夾中的pdf文件。 但是我遇到了性能問題-花更多時間打開tar.gz文件夾,其中包含1000多個小pdf文件,每個文件大小為10-25 MB。該文件夾的總大小為2GB

如何提高解壓縮文件的讀取性能?

FileInputStream fin = new FileInputStream(tarName);
BufferedInputStream in = new BufferedInputStream(fin);
GzipCompressorInputStream gzIn = new GzipCompressorInputStream(in);
TarArchiveInputStream tarIn = new TarArchiveInputStream(gzIn);
TarArchiveInputStream tarIn1 = new TarArchiveInputStream(tarIn);
TarArchiveEntry entry = null;

byte[] buffer = new byte[5024];
int nrBytesRead;

while ((entry = (TarArchiveEntry) tarIn1.getNextEntry()) != null) {
    System.out.println("it finds a file "
                         + entry.getName().toString());
    if (entry.getName().toString().equals(fileName)) {

        while ((nrBytesRead = tarIn1.read(buffer)) > 0) {

            out.write(buffer, 0, nrBytesRead);
        }
        break;
    }
}

tar.gz格式不是為隨機訪問而設計的。 它旨在用於立即拆開整個包裝。 這樣就可以將一系列文件壓縮為單個流,通常可以提高壓縮率,尤其是對於許多小文件。 但是,如果嘗試從中間的某個位置僅拉出一個文件,則需要首先解壓縮所有文件。

為了隨機訪問單個文件,您應該考慮使用zip格式重新打包。 壓縮效果不佳,您可以非常快速地提取單個文件。 在Java中,查看ZipFile類

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM