获取Java InputStream后面的文件的字节数
Java中的InputStream
类提供了skip()
方法,可以用来跳过输入流中的字节。但是有一个问题,如何获取输入流中文件的字节数呢?有没有办法利用skip()
方法来近似地获取文件的大小呢?
下面是一种可能的解决方法:
int bytes = 1024; // 跳过的块大小,根据需要进行调整 try { int skipped = 0; while(stream.available()) { stream.skip(bytes); skipped += bytes; // 省略...对skipped进行处理 } } catch(IOException ex) { // 处理跳过的字节数超过文件大小的情况 }
这段代码中,通过循环不断地调用skip()
方法来跳过输入流中的字节,并累加跳过的字节数。这样就可以近似地获取文件的大小了。
不过这段代码还有改进的空间,可以更智能地处理跳过字节过多导致的IOException
异常。具体的改进方式留给读者自己去尝试。
作者表示,他需要获取文件的准确字节数,而不是近似值。有人建议可以逐个字节地跳过,这样可以获取准确的文件大小。但是为什么需要知道准确的文件大小呢?
作者解释说,他正在将文件上传到Dropbox,并且Dropbox的API需要准确的上传字节数。所以他需要准确地获取文件的大小。
有了以上的解决方法,作者就可以通过输入流获取文件的字节数,并满足Dropbox API的需求了。