请考虑以下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)
这一行时,它会显示正确的文件大小。为什么会这样?我想我不太了解这些课程。是否有更好理解的指针?
感谢您的帮助。
答案 0 :(得分:1)
不了解j2me,但是InputStream.available()的Java6 javadoc说明了这一点:
请注意,虽然有些实现 InputStream将返回总数 流中的字节数,很多 将不会。它永远不会正确使用 此方法的返回值为 分配一个旨在容纳所有人的缓冲区 此流中的数据。