[英]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.