[英]Reading first N bytes of a file as an InputStream in Java?
[英]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.