天天看点

java 获取文件大小

有两种方式

方式一:使用file 的length()方法;

方式二:使用fileinputstream的available()方法;

实例:

java 获取文件大小

@test  

    public void test01() throws ioexception {  

        string filepath = "d:\\bin\\pushpoxy-0.0.1-snapshot.jar";  

        system.out.println("file has " + new file(filepath).length()+ " bytes");  

        fileinputstream fis = null;    

        fis = new fileinputstream(filepath);    

        system.out.println("file has " + fis.available() + " bytes");  

    }  

运行结果 :

file has 29061936 bytes

其实这两个方法时有区别的;

file 的length()方法 是获取文件所占硬盘空间大小;

fileinputstream的available()方法是还有多少字节可以读取.

available()方法的说明如下:

returns an estimate of the number of remaining bytes that can be read (or skipped over) from this input stream without blocking by the next invocation of a method for this input stream. the next invocation might be the same thread or another thread. a single read or skip of this many bytes will not block, but may read or skip fewer bytes. 

我们把上面的程序稍微修改一下:

java 获取文件大小

        fis = new fileinputstream(filepath);  

        byte[]bytes=new byte[10];  

        fis.read(bytes);  

        fis.skip(-10);  

 执行结果如下:

file has 29061926 bytes

总结:获取文件大小时建议使用file 的length()方法