InputStream.available()返回0或无文件大小

时间:2011-02-21 22:15:38

标签: file-io java-me

请考虑以下j2me代码段:

1. FileConnection fc = (FileConnection) Connector.open("file:///root1/photos/2.png");
2. InputStream is = fc.openInputStream();
3. System.out.println(is.available());
4. byte[] fileBytes = new byte[is.available()];
5. int sizef = is.read(fileBytes);
6. System.out.println("filesize:"+sizef);

在这种情况下,第3行和第3行6输出0作为文件大小。但是当我在第2行之后放置is.read(anyByteArray)这一行时,它会显示正确的文件大小。为什么会这样?我想我不太了解这些课程。是否有更好理解的指针?

感谢您的帮助。

1 个答案:

答案 0 :(得分:1)

不了解j2me,但是InputStream.available()的Java6 javadoc说明了这一点:

  

请注意,虽然有些实现   InputStream将返回总数   流中的字节数,很多   将不会。它永远不会正确使用   此方法的返回值为   分配一个旨在容纳所有人的缓冲区   此流中的数据。