读取文件大小的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,而这个量级我们现在很容易就达到了。
如下: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,而这个量级我们现在很容易就达到了。
相关文章推荐
- 关于inputStream.available()与HttpURLConnection.getContentLength()方法获取下载文件的大小
- 关于inputStream.available()与HttpURLConnection.getContentLength()方法获取下载文件的大小
- Java中的length、length()和size方法的区别
- string的length()与size()方法有什么区别
- java中length属性,length()方法和size()的方法的区别
- java中length属性,length()方法和size()的方法的区别
- 再来谈一谈Ruby中的.count .size 与.length方法区别
- .NET读取Excel文件的三种方法的区别
- windows 和 linux 上 循环读取文件名称的区别和方法
- 文本标签自适应大小-文件读取方法
- 遇到问题---java获取网络文件大小失败getContentLength()为-1 完整解决方法
- java中length属性,length()方法和size()的方法的区别
- 在移动端获取服务端文件的大小 this.fileSize = conn.getContentLength();
- Java读取本地文件的两种方法及其区别
- 遇到问题---java获取网络文件大小失败getContentLength()为-1 完整解决方法
- JAVA中的length属性和length()方法和size()方法的区别
- 总结C/C++下读取文件大小的方法
- java中length属性,length()方法和size()的方法的区别
- windows mobile 6.3 FTP FtpGetFileSize 取得文件大小为0xFFFFFFFF 解决方法
- java中length属性,length()方法和size()的方法的区别