牛骨文教育服务平台(让学习变的简单)
博文笔记

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

创建时间:2015-03-03 投稿人: 浏览次数:4599
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()方法,可以得到值

声明:该文观点仅代表作者本人,牛骨文系教育信息发布平台,牛骨文仅提供信息存储空间服务。