package com.newer.io;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
public class Caculator_1 {
int tfolder = 0;
int tfiles = 0;
public static void main(String[] args) {
Caculator_1 c = new Caculator_1();
String path = "c:/abc";// 目录文件夹路径
File f = new File(path);//读取指定路径下的文件
System.out.println("总大小" + c.getsize(f) + "字节");
System.out.println("总文件夹数" + c.gettfolder());
System.out.println("总文件数" + c.gettfiles());
System.out.println("开始复制");
c.copy("c:/abc", "c:/abc1");
System.out.println("复制成功");
System.out.println("开始删除");
c.deletes(f);
System.out.println("删除成功");
}
public long getsize(File path) {//<strong> 该方法用于统计文件夹数文件数以及文件大小</strong>
long filesize = 0;
File[] files = path.listFiles();
// for (int i = 0; i < files.length; i++) {
// if (files[i].isDirectory()) {
// tfolder++;
// filesize+=getsize(files[i]);
// }else{
// tfiles++;
// filesize+=files[i].length();
// }
// }
for (File file : files) {// foreach循环与上面循环作用相同
if (file.isDirectory()) {
tfolder++;
filesize += getsize(file);
} else {
tfiles++;
filesize += file.length();// 文件大小字节为单位
}
}
return filesize;// 统计目录大小
}
public int gettfolder() {
return tfolder;
}
public int gettfiles() {
return tfiles;
}
public void deletes(File path) {// <strong>删除文件夹及文件的方法</strong>
File[] files = path.listFiles();
for (File file : files) {
if (file.isDirectory()) {
deletes(file);// 使用递归
file.delete();
} else {
file.delete();
}
}
}
public void copy(String a, String b) {//<strong>复制文件的方法</strong> 两个String类型参数传入被复制文件路径和目标文件路径
File src = new File(a);
File dest = new File(b);
if (!src.exists()) {// 判断被复制文件夹是否存在
System.out.println("文件夹不存在");
return;
}
if (src.isFile()) {// 如果是文件
try {
// 读出
FileInputStream in = new FileInputStream(a);
// 写入
FileOutputStream out = new FileOutputStream(b);
// 缓冲区
byte[] buf = new byte[1024];
int n;
while (-1 != (n = in.read(buf))) {
out.write(buf, 0, n);
}
// 关闭流
in.close();
out.close();
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
} else if (src.isDirectory()) {// 如果是目录
if (!dest.exists()) {// 如果没有该文件夹
dest.mkdir();// 创建文件夹
}
String[] filelist = src.list();
for (int i = 0; i < filelist.length; i++) {
copy(a + "/" + filelist[i], b + "/" + filelist[i]);
// 使用递归解决文件夹下还有文件夹的问题
}
}
}
}
Java IO 目录文件复制与删除以及目录大小与文件个数统计
最新推荐文章于 2024-09-16 20:08:29 发布