Java如何實(shí)現(xiàn)判斷并輸出文件大小
java判斷并輸出文件大小
有些地方需要判斷用戶上傳的文件大小或者下載文件之類的地方,這個(gè)功能還是比較實(shí)用的。
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計(jì)算文件大小三種方法及優(yōu)缺點(diǎn)比較
1、通過File 的length() 方法計(jì)算文件大小;
2、使用FileInputStream后通過FileChannel的size()方法計(jì)算文件大?。?/p>
3、通過FileInputStream的available()方法計(jì)算文件大?。?/p>
代碼示例:
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("小文件計(jì)算文件大小");
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() 方法獲取文件大小,這個(gè)通??梢詰?yīng)用于本地文件的大小計(jì)算;
* */
private static long getFileSize01(File file) {
return file.length();
}
/*
* 獲取文件大小的方法02:
* 通過FileChannel類來獲取文件大小,這個(gè)方法通常結(jié)合輸入流相關(guān),
* 因此可以用于文件網(wǎng)絡(luò)傳輸時(shí)實(shí)時(shí)計(jì)算文件大??;
* */
private static long getFileSize02(File file) throws IOException {
FileInputStream fis = new FileInputStream(file);
FileChannel fc = fis.getChannel();
return fc.size();
}
/*
* 獲取文件大小的方法03:
* FileInputStream的available()方法看可以用于小文件的文件大小計(jì)算,
* 因?yàn)閍vailable()的返回值類型為int型,可能會(huì)存在溢出的情況,
* 所以 available()方法計(jì)算文件大小不建議使用;
* */
private static int getFileSize03(File file) throws IOException {
FileInputStream fis = new FileInputStream(file);
return fis.available();
}
}計(jì)算大文件時(shí):cn_windows_7_ultimate_with_sp1_x64_dvd_618537.iso
大文件計(jì)算文件大小
文件名稱:cn_windows_7_ultimate_with_sp1_x64_dvd_618537.iso
- length方法獲取文件大小:3419052032 byte.
- FileChannel方法獲取文件大小:3419052032 byte.
- available方法獲取文件大小:2147483647 byte.
- Integer類型數(shù)據(jù)的最大值:2147483647
計(jì)算小文件時(shí):Chrome-Goagent.7z
小文件計(jì)算文件大小
文件名稱:Chrome-Goagent.7z
- length方法獲取文件大小:105959048 byte.
- FileChannel方法獲取文件大小:105959048 byte.
- available方法獲取文件大小:105959048 byte.
- Integer類型數(shù)據(jù)的最大值:2147483647
優(yōu)缺點(diǎn)比較
1、length() 方法的返回值是long類型的,F(xiàn)ileChannl的size()方法是long類型的,F(xiàn)ileInputStream的available() 方法是int類型的;
2、在計(jì)算大文件的時(shí)候不能使用FileInputStream的available() 方法,這樣計(jì)算結(jié)果會(huì)超出int類型最大值會(huì)產(chǎn)生溢出導(dǎo)致計(jì)算結(jié)果不準(zhǔn)確;
3、在計(jì)算大文件的時(shí)候建議使用方法一和方法三,使用方法三會(huì)產(chǎn)生int類型溢出錯(cuò)誤;
4、同時(shí),在計(jì)算本地文件大小的時(shí)候建議使用方法一,length() 的方式計(jì)算文件大小;在計(jì)算網(wǎng)絡(luò)傳輸文件的時(shí)候建議使用FileChannel的size() 方法,方法二包含在FileinputStream中使用具有較好的網(wǎng)絡(luò)性能;
總結(jié)
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
SpringBoot基于數(shù)據(jù)庫的定時(shí)任務(wù)統(tǒng)一管理的實(shí)現(xiàn)
這篇文章主要介紹了SpringBoot基于數(shù)據(jù)庫的定時(shí)任務(wù)統(tǒng)一管理的實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2019-12-12
java實(shí)現(xiàn)電腦定時(shí)關(guān)機(jī)的方法
這篇文章主要介紹了java實(shí)現(xiàn)電腦定時(shí)關(guān)機(jī)的方法,首先通過java注冊(cè)windows服務(wù)程序,再以一個(gè)簡(jiǎn)單的java程序?qū)崿F(xiàn)定時(shí)關(guān)機(jī)的功能,非常具有實(shí)用價(jià)值,需要的朋友可以參考下2014-11-11
Java Swing組件文件選擇器JFileChooser簡(jiǎn)單用法示例
這篇文章主要介紹了Java Swing組件文件選擇器JFileChooser簡(jiǎn)單用法,結(jié)合實(shí)例形式分析了Swing組件中的文件選擇器JFileChooser的簡(jiǎn)單使用方法,需要的朋友可以參考下2017-11-11
Java MD5加密工具類的方法(支持多參數(shù)輸入)
在實(shí)際開發(fā)過程中,MD5加密是一種常見的數(shù)據(jù)安全處理手段,常用于密碼存儲(chǔ)、數(shù)據(jù)完整性校驗(yàn)等場(chǎng)景,這篇文章主要介紹了Java MD5加密工具類(支持多參數(shù)輸入),需要的朋友可以參考下2024-05-05
SpringBoot?Knife4j框架&Knife4j的顯示內(nèi)容的配置方式
Knife4j框架是基于Swagger2開發(fā)的在線API文檔生成工具,主要功能包括自動(dòng)生成API文檔、接口文檔展示、接口測(cè)試工具、接口權(quán)限控制和在線調(diào)試,該框架支持通過注解自動(dòng)生成詳細(xì)的接口文檔,開發(fā)者可以直接在文檔界面進(jìn)行接口測(cè)試和調(diào)試2024-09-09

