方法一:
package com.test.demo.test;
import lombok.Data;
import java.io.*;
import java.util.ArrayList;
import java.util.List;
/**
* @Title: GetFileSize.java
* @Project: byy
* @Description: 获取文件大小
* @Date: 2019-07-08 10:11
* @Version: V2.0
**/
public class GetFileSize {
public static void main(String[] args) {
List<Bean> data = new ArrayList<Bean>();
//输入一个路径
String path="G:\\temp";
getFile(data, path);
save(data);
System.out.println("统计完毕");
}
private static void save(List<Bean> data) {
OutputStream os = null;
OutputStreamWriter osw = null;
try {
//将统计的数据大小统计为文件 路径
os = new FileOutputStream(new File("C:\\Users\\admin\\Desktop\\d1.csv"));
osw = new OutputStreamWriter(os, "GBK");
for (Bean bean : data) {
osw.write(bean + "\r\n");
}
osw.flush();
} catch (Exception e) {
e.printStackTrace();
} finally {
if (os != null) {
try {
os.close();
} catch (Exception e) {
e.printStackTrace();
}
}
if (osw != null) {
try {
osw.close();
} catch (Exception e) {
e.printStackTrace();
}
}
}
}
private static void getFile(List<Bean> data, String path) {
File f = new File(path);
File[] fs = f.listFiles();
if (fs == null) {
return;
}
for (File file : fs) {
//将统计的文件的字节数(单位:B) 方便计算大小
if (file.isFile()) {
//getFileSize(file)返回的int最大显示2G
//System.out.println("文件名:"+ file.getName()+",文件大小是:"+ getFileSize(file));
//file.length()可显示完整大小
System.out.println("文件名:"+ file.getName()+",文件大小是:"+ file.length());
data.add(new Bean(file.getParentFile().getAbsolutePath(), file.getName(), (file.length())));
} else {
getFile(data, file.getAbsolutePath());
}
}
}
private static int getFileSize(File f) {
InputStream fis = null;
try {
fis = new FileInputStream(f);
int docsize=fis.available();
return docsize;
} catch (Exception e) {
e.printStackTrace();
} finally {
if (fis != null) {
try {
fis.close();
} catch (Exception e) {
e.printStackTrace();
}
}
}
return 0;
}
}
@Data
class Bean {
private String filePath;
private String fileName;
private long size;
public Bean(String filePath, String fileName, long size) {
this.filePath = filePath;
this.fileName = fileName;
this.size = size;
}
}
方法二:
FileChannel fc= null;
try {
File f= new File("G:\\temp\\Stanford.zip");
if (f.exists() && f.isFile()){
FileInputStream fis= new FileInputStream(f);
fc= fis.getChannel();
System.out.println(fc.size());
}else{
System.out.println("file doesn't exist or is not a file");
}
} catch (FileNotFoundException e) {
System.out.println(e);
} catch (IOException e) {
System.err.println(e);
} finally {
if (null!=fc){
try{
fc.close();
}catch(IOException e){
System.err.println(e);
}
}
}