Enumeration e=FileSystemRegistry.listRoots(); //获取文件路径
String root = (String) e.nextElement();
String url="file:///"+root+filename;
FileConnection conn=null;
try{
conn=(FileConnection)Connector.open(url,Connector.READ); //打开文本文件
DataInputStream in=conn.openDataInputStream(); //打开数据输入流
int size=in.available(); //检查文本文件大小
System.out.println(size);
byte[] buffer=new byte[size]; //创建文本缓冲区
in.read(buffer); //将所有内容读入缓冲区
String content=new String(buffer,encoding); //用缓冲区中的内容创建字符串
content=content.substring(1);
buffer=null; //释放缓冲区
in.close(); //关闭数据输入流
conn.close(); //关闭文本文件
in=null;
.....
int size=in.available();获取的大小为0,但如果手动设置buffer大小,是能够读取文件的数据,那么说输入流应该是正常的,但为什么in.available()却不能获得输入流的大小呢,
如果你只是想得到文件大小。可以直接用int size=(int)conn.fileSize();InputSteam的available()方法如果没被重写的话永远返回0。FileInputStream实现了available()方法,可以得到值
关于InputStream中available()方法的问题
原文:http://blog.csdn.net/luo446718254/article/details/44034155