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