Java如何實現(xiàn)判斷并輸出文件大小
java判斷并輸出文件大小
有些地方需要判斷用戶上傳的文件大小或者下載文件之類的地方,這個功能還是比較實用的。
Java代碼如下:
package 包名; import java.io.File; public class FileAction { ? ? public static void main(String[] args) { ? ? ? ? File file = new File("chaoyue.jpeg"); ? ? ? ? long size = file.length() / 1024; ? ? ? ? System.out.println("文件大?。? + size + "kb"); ? ? } }
java計算文件大小三種方法及優(yōu)缺點比較
1、通過File 的length() 方法計算文件大小;
2、使用FileInputStream后通過FileChannel的size()方法計算文件大?。?/p>
3、通過FileInputStream的available()方法計算文件大小;
代碼示例:
package encryption; import java.io.File; import java.io.FileInputStream; import java.io.IOException; import java.nio.channels.FileChannel; public class Test02 { public static void main(String[] args) throws IOException { // 獲取文件大小的三種方法 //大文件 String fileStr = "E:\\src\\cn_windows_7_ultimate_with_sp1_x64_dvd_618537.iso"; //小文件 String fileStr01 = "E:\\src\\Chrome-Goagent.7z"; File file = new File(fileStr); long size01 = getFileSize01(file); long size02 = getFileSize02(file); int size03 = getFileSize03(file); System.out.println("小文件計算文件大小"); System.out.println("文件名稱:"+file.getName()); System.out.println("length方法獲取文件大小:"+size01+" byte."); System.out.println("FileChannel方法獲取文件大小:"+size02+" byte."); System.out.println("available方法獲取文件大小:"+size03+" byte."); System.out.println("\nInteger類型數(shù)據(jù)的最大值:"+Integer.MAX_VALUE); } /* * 獲取文件大小的方法01: * 通過文件的length() 方法獲取文件大小,這個通??梢詰糜诒镜匚募拇笮∮嬎?; * */ private static long getFileSize01(File file) { return file.length(); } /* * 獲取文件大小的方法02: * 通過FileChannel類來獲取文件大小,這個方法通常結合輸入流相關, * 因此可以用于文件網(wǎng)絡傳輸時實時計算文件大?。? * */ private static long getFileSize02(File file) throws IOException { FileInputStream fis = new FileInputStream(file); FileChannel fc = fis.getChannel(); return fc.size(); } /* * 獲取文件大小的方法03: * FileInputStream的available()方法看可以用于小文件的文件大小計算, * 因為available()的返回值類型為int型,可能會存在溢出的情況, * 所以 available()方法計算文件大小不建議使用; * */ private static int getFileSize03(File file) throws IOException { FileInputStream fis = new FileInputStream(file); return fis.available(); } }
計算大文件時:cn_windows_7_ultimate_with_sp1_x64_dvd_618537.iso
大文件計算文件大小
文件名稱:cn_windows_7_ultimate_with_sp1_x64_dvd_618537.iso
- length方法獲取文件大小:3419052032 byte.
- FileChannel方法獲取文件大小:3419052032 byte.
- available方法獲取文件大小:2147483647 byte.
- Integer類型數(shù)據(jù)的最大值:2147483647
計算小文件時:Chrome-Goagent.7z
小文件計算文件大小
文件名稱:Chrome-Goagent.7z
- length方法獲取文件大小:105959048 byte.
- FileChannel方法獲取文件大小:105959048 byte.
- available方法獲取文件大小:105959048 byte.
- Integer類型數(shù)據(jù)的最大值:2147483647
優(yōu)缺點比較
1、length() 方法的返回值是long類型的,F(xiàn)ileChannl的size()方法是long類型的,F(xiàn)ileInputStream的available() 方法是int類型的;
2、在計算大文件的時候不能使用FileInputStream的available() 方法,這樣計算結果會超出int類型最大值會產(chǎn)生溢出導致計算結果不準確;
3、在計算大文件的時候建議使用方法一和方法三,使用方法三會產(chǎn)生int類型溢出錯誤;
4、同時,在計算本地文件大小的時候建議使用方法一,length() 的方式計算文件大小;在計算網(wǎng)絡傳輸文件的時候建議使用FileChannel的size() 方法,方法二包含在FileinputStream中使用具有較好的網(wǎng)絡性能;
總結
以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關文章
Spring?Cloud?使用?Resilience4j?實現(xiàn)服務熔斷的方法
服務熔斷是為了保護我們的服務,比如當某個服務出現(xiàn)問題的時候,控制打向它的流量,讓它有時間去恢復,或者限制一段時間只能有固定數(shù)量的請求打向這個服務,這篇文章主要介紹了Spring?Cloud?使用?Resilience4j?實現(xiàn)服務熔斷,需要的朋友可以參考下2022-12-12SpringBoot項目集成xxljob實現(xiàn)全紀錄
XXL-JOB是一個分布式任務調(diào)度平臺,本文主要介紹了SpringBoot項目集成xxljob實現(xiàn)全紀錄,文中通過示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下2021-11-11Java中常用輸出方式(print() println() printf())
這篇文章主要介紹了Java中常用輸出方式(print() println() printf()),具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教2023-09-09