簡體   English   中英

獲取Java InputStream后面文件的字節數

[英]Get the number of bytes of a file behind a Java InputStream

如標題所示,我需要知道在InputStream之后的文件有多少字節。 我不想下載所有字節和計數(需要很長時間)。 我只需要知道文件有多少字節即可。

像這樣:

int numberOfBytes = countBytes(inputStream);

所以,我需要一個countBytes(InputStream inputStream)的實現。

除了消耗整個流並計算字節數之外,您不能(沒有API)。

available()方法,但是很明顯它並沒有滿足您的要求:

請注意,雖然InputStream的某些實現將返回流中的字節總數,但許多實現則不會

如果InputStream與文件(而不是套接字)相關聯,也許您可​​以使用其他API來獲取文件的大小?

您能以某種方式利用skip()來近似文件的大小嗎?

int bytes = 1024; // Chunk size for skipping. Adjust as necessary
try {
    int skipped = 0;
    while(stream.available()) {
        stream.skip(bytes);
        skipped += bytes;
        // Elided...do something with skipped
    }
} catch(IOException ex) {
    // Handle a skip that's too big
}

我也確信您可以使此循環更智能並避免不可避免的IOException ,但這是讀者的一項練習。

暫無
暫無

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

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