一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

服務器之家:專注于服務器技術及軟件下載分享
分類導航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術|正則表達式|C/C++|IOS|C#|Swift|Android|VB|R語言|JavaScript|易語言|vb.net|

服務器之家 - 編程語言 - Java教程 - java獲取文件大小的幾種方法

java獲取文件大小的幾種方法

2021-01-21 13:47HelloWhy Java教程

這篇文章主要介紹了java獲取文件大小的幾種方法,小編覺得挺不錯的,現在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧

目前java獲取文件大小的方法有兩種:

1、通過file的length()方法獲取;

2、通過流式方法獲取;

通過流式方法又有兩種,分別是舊的java.io.*中fileinputstream的available()方法和新的java..nio.*中的filechannel

下面依次介紹這幾種方法:

首先選擇一個文件并查看這個文件在windows中顯示的大小,為了測試準確性,我這里選取了一個大文件(超過2gb)

查看這個文件在windows中顯示的大?。?/p>

java獲取文件大小的幾種方法

使用在線轉換工具將其轉換成字節:

java獲取文件大小的幾種方法

可以看出這個文件的實際大小是3265574912byte,下面通過代碼來獲取文件大小,并進行比較:

一、通過length方法:

1、創建一個文件:

?
1
file file = new file("e:\\全部軟件\\軟件壓縮包\\windows7_w64_sp1_ent.iso");

2、獲取文件大?。?/p>

?
1
2
3
4
5
6
7
8
9
10
/**
 * 獲取文件長度
 * @param file
 */
public static void getfilesize1(file file) {
  if (file.exists() && file.isfile()) {
    string filename = file.getname();
    system.out.println("文件"+filename+"的大小是:"+file.length());
  }
}

3、查看結果:

java獲取文件大小的幾種方法

可見,使用length方法獲取的文件大小與windows中顯示的大小一致!

二、通過file.io.*中的流式方法獲取

1、創建一個文件

依舊使用上面的文件

?
1
file file = new file("e:\\全部軟件\\軟件壓縮包\\windows7_w64_sp1_ent.iso");

2、使用available方法獲?。?/p>

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
/**
   * 根據java.io.*的流獲取文件大小
   * @param file
   */
  public static void getfilesize2(file file){
    fileinputstream fis = null;
    try {
      if(file.exists() && file.isfile()){
        string filename = file.getname();
        fis = new fileinputstream(file);
        system.out.println("文件"+filename+"的大小是:"+fis.available()+"\n");
      }
    } catch (exception e) {
      e.printstacktrace();
    }finally{
      if(null!=fis){
        try {
          fis.close();
        } catch (ioexception e) {
          e.printstacktrace();
        }
      }
    }
  }

3、查看結果:

java獲取文件大小的幾種方法

通過這種方法獲取的文件大小是2147483647,很明顯,這是int類型所能表示的最大值2^31-1,究其原因是因為文件的大小超過了int所能表示的最大值?。。?/p>

file.length()方法返回的類型:

java獲取文件大小的幾種方法

available()方法返回的類型:

java獲取文件大小的幾種方法

三、通過file.nio.*中的filechannel工具來獲取文件大?。?/strong>

1、創建一個文件

依舊使用相同的大文件:

?
1
file file1 = new file("e:\\全部軟件\\軟件程序\\httpwatch.exe");

2、使用filechannel獲取文件大?。?/p>

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
/**
 * 根據java.nio.*的流獲取文件大小
 * @param file
 */
public static void getfilesize3(file file){
  filechannel fc = null;
  try {
    if(file.exists() && file.isfile()){
      string filename = file.getname();
      fileinputstream fis = new fileinputstream(file);
      fc = fis.getchannel();
      system.out.println("文件"+filename+"的大小是:"+fc.size()+"\n");
    }
  } catch (exception e) {
    e.printstacktrace();
  }finally{
    if(null!=fc){
      try {
        fc.close();
      } catch (ioexception e) {
        e.printstacktrace();
      }
    }
  }
}

3、查看結果:

java獲取文件大小的幾種方法

可見通過這種方法獲取的文件大小和第一種一樣,都能獲取文件實際大小。

四、使用小文件測試以上三種方法:

以上情況中文件大小超過了available()返回類型int的最大值,下面使用一個沒有超過int最大值的文件測試,來驗證通過這三種方法獲取的大小是否和windows中顯示的一致:

1、獲取文件,查看其在windows中的大小:

java獲取文件大小的幾種方法

2、將該文件單位轉成byte:

java獲取文件大小的幾種方法

可見該文件總共有28147712個字節。

3、查看通過三種方法獲取的結果:

java獲取文件大小的幾種方法

根據結果得知,三種方法獲取的大小一致,只是跟文件的實際大小有一些誤差?。?/p>

本以為是文件類型的原因,于是又試了大小差不多的不同類型文件,結果發現絕大多數情況下只有300m以上的文件才能獲取最準確的文件大小,300m以下的都會有一定的誤差!

參考了http://www.ythuaji.com.cn/article/83503.html這篇文章,但是里面沒測試300m以下的文件。

下面是我使用不同大小的文件進行的測試,通過文件在windows中顯示的大小、轉化成單位byte后與java獲取的方式對比,并計算出誤差值:

java獲取文件大小的幾種方法

總結java獲取文件大?。?/p>

1、三種方法獲取小文件(300m以下)時結果一致,但是與windows顯示的值有一定誤差;

2、獲取大文件時,為避免文件長度大于方法返回值類型的最大值,盡量使用length或filechannel方法獲取;

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持服務器之家。

原文鏈接:http://www.cnblogs.com/hellowhy/p/7238570.html

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 91精品久久国产青草 | 四虎播放器| 日韩在线观看网站 | 日韩精品亚洲专区在线影视 | 国产一卡二卡3卡4卡四卡在线 | 亚洲一级片在线播放 | 男人天堂中文字幕 | 911福利视频 | 爱爱一级视频 | 国产特黄一级一片免费 | 天堂va在线高清一区 | 午夜精品久久久内射近拍高清 | 青草青草久热精品视频在线网站 | 4438全国免费观看 | 波多野结衣在线看 | 久久国产乱子伦精品免费不卡 | 婷婷天天 | 地址二地址三2021变更 | 欧美一区二区三区在线观看免费 | 午夜爽喷水无码成人18禁三级 | 亚洲qvod图片区电影 | 和岳m的小说 | 免费毛片 | 四虎影视永久在线 | 2020韩国r级理论片在线观看 | 亚洲男人的天堂网站 | 国产日韩免费视频 | np高h疯狂黄暴宫口 narutomanga玖辛奈之乳 | 久草草在线视视频 | 韩国一大片a毛片女同 | 色偷偷亚洲男人 | 蜜桃麻豆| 男人的天堂久久精品激情a 男人的天堂va | 精品国产乱码久久久人妻 | 免费欧美视频 | 奇米白色 | 国产亚洲精品高清在线 | 国产91页 | 午夜无码片在线观看影院 | a级情欲片在线观看hd | 女人zooxx禽交 |