关于InputStream中available()方法的问题

来源:互联网 发布:詹姆斯全明星mvp数据 编辑:程序博客网 时间:2024/04/29 23:49
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()方法,可以得到值

0 0