我在Windows機器中使用gzip實用程序。我壓縮一個文件並將其作爲blob存儲在數據庫中。當我想使用gzip實用程序解壓縮此文件時,我正在將此字節流寫入process.getOutputStream。但是在30KB之後,它無法讀取文件。它掛在那裏。將大文件作爲流發送到process.getOutputStream
嘗試使用內存參數,讀取和刷新邏輯。但是,如果我嘗試寫入文件,它的速度相當快。
OutputStream stdin = proc.getOutputStream();
Blob blob = Hibernate.createBlob(inputFileReader);
InputStream source = blob.getBinaryStream();
byte[] buffer = new byte[256];
long readBufferCount = 0;
while (source.read(buffer) > 0)
{
stdin.write(buffer);
stdin.flush();
log.info("Reading the file - Read bytes: " + readBufferCount);
readBufferCount = readBufferCount + 256;
}
stdin.flush();
Regards, Mani Kumar Adari。
謝謝斯蒂芬。 gzip.exe是我們使用的Windows中的一個unix實用程序。 gzip.exe在命令提示符下工作正常。但不是與java程序。有什麼辦法可以增加java寫入管道的緩衝區大小。目前我很關注輸入部分。 – 2010-11-13 10:37:01
@Mani Kumar Adari增加緩衝區,即使這是可行的,也無濟於事。您應該有讀取gzip.exe輸出的內容。或者,只需使用標準的GZIPInputStream類,就完全不需要gzip.exe。 – nos 2010-11-13 14:06:47