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

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
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值