zoukankan      html  css  js  c++  java
  • java获取文件大小的方法

    目前Java获取文件大小的方法有两种:

    1、通过file的length()方法获取;

    2、通过流式方法获取;

    通过流式方法又有两种,分别是旧的java.io.*中FileInputStream的available()方法和新的java..nio.*中的FileChannel

    length方法:

     1 /**
     2      * 获取文件大小(字节byte)
     3      * 方式一:file.length()
     4      */
     5     public void getFileLength(File file){
     6         long fileLength = 0L;
     7         if(file.exists() && file.isFile()){
     8             fileLength = file.length();
     9         }
    10         System.out.println("文件"+file.getName()+"的大小为:"+fileLength+"byte");
    11     }

    available方法:

     1 /**
     2      * 获取文件大小
     3      * 方式二:FileInputStream.available()
     4      * 注意:int类型所能表示的最大值2^31-1,如果文件的大小超过了int所能表示的最大值结果会有误差
     5      * @throws IOException 
     6      */
     7     public void getFileLength2(File file) throws IOException{
     8         int length = 0;
     9         FileInputStream fis = null;
    10         if(file.exists() && file.isFile()){
    11             fis = new FileInputStream(file);
    12             length = fis.available();
    13         }
    14         System.out.println("文件"+file.getName()+"的大小为:"+length+"byte");
    15     }

    FileChannel方法:

     1 /**
     2      * 获取文件大小
     3      * 方式一:FileInputStream.getChannel()
     4      * @throws IOException 
     5      */
     6     public void getFileLength3(File file) throws IOException{
     7         FileInputStream fis = null;
     8         FileChannel fileChannel = null;
     9         if(file.exists() && file.isFile()){
    10             fis = new FileInputStream(file);
    11             fileChannel = fis.getChannel();
    12         }
    13         System.out.println("文件"+file.getName()+"的大小为:"+fileChannel.size()+"byte");
    14     }

    总结java获取文件大小:

    1、三种方法获取小文件(300M以下)时结果一致,但是与windows显示的值有一定误差;

    2、获取大文件时,为避免文件长度大于方法返回值类型的最大值,尽量使用length或FileChannel方法获取;

  • 相关阅读:
    grpc源码分析之域名解析
    使用swig工具为go语言与c++进行交互
    使用VS2015编译grpc_1.3.1
    在linux中编译grpc
    win32网络模型之重叠I/O
    滚动动画animate-scroll扩展
    Android Studio Gradle更新的解决办法
    MUI——页面的创建、显示、关闭
    VS2013中使用QT插件后每次重新编译问题
    Oracle Rman恢复
  • 原文地址:https://www.cnblogs.com/lvjunlong/p/9312602.html
Copyright © 2011-2022 走看看