您的位置:首页 > 大数据 > 人工智能

读取文件大小的length()方法,available()方法,getChannel().size()的区别

2017-10-17 10:45 489 查看
今天在用到读取文件大小的available()方法的时候,想到ength方法,getChannel().size()也是有读取文件大小的功能,便去比较三种方法的区别:

如下:1.length()方法是File类的方法,getChannel().size()是FileChannel的方法,和available()方法是InputStream类的方法,

2,length方和getChannel().size()方法返回的是long类型,availa()方法返回的是int类型;

测试代码:

         File file =new File("D:\\ttt.txt");
System.out.println(file.length());---------7
FileInputStream in =new FileInputStream(file);//
System.out.println(in.available()+"----");//---------7
System.out.println(in.getChannel().size());//---------7

可以看出在这种小文件下,返回的文件大小三种方法是相同的

File file =new File("F:\\chromeDownload\\CentOS-7-x86_64-DVD-1511 (1).iso");
System.out.println(file.length());-----------------2147483647
FileInputStream in =new FileInputStream(file);//
System.out.println(in.available()+"----");//-----------4329570304
System.out.println(in.getChannel().size());//--------------4329570304

可以看出在文件比较打的情况下这三种方法得到的结果就有区别了getChannel().size()f和length()返回的是 4329570304 换算为4.03G 而2147483647换算之后为1.99G

究其原因,File的length()方法,getChannel().size()方法返回的类型为long,long型能表示的正数最大值为:9223372036854775807,折算成最大能支持的文件大小为:8954730132868714 EB字节,这个量级将在人类IT发展史上受用很多很多年,而FileInputStream的avaliable()方法返回值是int,在之前也介绍了最大的表示范围,所能支持的最大文件大小为:1.99GB,而这个量级我们现在很容易就达到了。

 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: