Java IO 目录文件复制与删除以及目录大小与文件个数统计

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]);
				// 使用递归解决文件夹下还有文件夹的问题
			}
		}
	}
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值