欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

黑马程序员_备份同一类文件(.java)

程序员文章站 2022-04-23 16:54:44
...

------- android培训java培训、期待与您交流! ----------

 

 

package cn.itcast.a_backup;

import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.Scanner;

public class TestBackup {
	public static void main(String[] args) throws IOException {
		File dir = getDir();
		System.out.println(dir);
		listAllFiles(dir);
	}

	/**
	 * 获取指定目录中所有的.java 文件. 第一点: 找到所有文件 第二点: 找到后缀名是.java 的文件. 如果是目录: 进入目录使用递归查找
	 * 
	 * @param dir
	 * @throws IOException
	 */
	private static void listAllFiles(File dir) throws IOException {
		// 获取指定目录中所有的子文件和子目录
		File[] listFiles = dir.listFiles();
		for (File f : listFiles) {
			// 如果是目录,继续调用自己. 直到目录中没有子目录了.
			if (f.isDirectory()) {
				listAllFiles(f);
			} else if (f.isFile() && f.getName().endsWith(".java")) {
				cpoyFile(f);
			}
		}
	}

	/**
	 * 拷贝.java 文件. 备份, 就是使用IO流拷贝文件.只不错备份文件后缀名需要特殊的标示 .bak
	 * 
	 * @param f
	 * @throws IOException
	 */
	private static void cpoyFile(File f) throws IOException {
		// Demo1.java ->Demo1.bak
		// 获取需要备份的源文件的前缀名.
		String srcStartName = f.getName().substring(0,
				f.getName().lastIndexOf("."));
		// 根据源文件的前缀名生成备份文件的文件名.
		String destFileName = srcStartName + ".bak";
		// 指定备份文件保存的路径
		File backupDir = new File("e:\\javaFiles");
		// 检测该目录是否存在,如果不存在初始化一个
		if (!backupDir.exists()) {
			backupDir.mkdir();
		}
		// 拷贝文件.
		// 使用字节输入流封装源文件.
		FileInputStream fis = new FileInputStream(f);

		// 创建字节输出流,保存读取的数据.实现备份
		FileOutputStream fos = new FileOutputStream(new File(backupDir,
				destFileName));
		// 读取源文件.
		byte[] datas = new byte[1024];
		int len;
		while ((len = fis.read(datas)) != -1){
			fos.write(datas, 0, len);
		}

		// 关闭流
		fis.close();
		fos.close();

	}

	/**
	 * 控制台获取有效的目录.
	 * 
	 * @return
	 */
	private static File getDir() {
		// 控制台获取用户输入的一个目录
		Scanner sc = new Scanner(System.in);
		String filePath;
		File dir;
		while (true) {
			System.out.println("请输入目录:");
			filePath = sc.next();
			dir = new File(filePath);
			// 检测目录是否存在
			if (!dir.exists()) {
				System.out.println("目录不存在...");
				continue; // 结束本次,继续下一次
			}
			// 检测是否是文件.
			if (!dir.isDirectory()) {
				System.out.println("请输入有效的目录");
				continue;
			}
			break;
		}
		return dir;
	}
}

 

package cn.itcast.b_backup;

import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.Arrays;
import java.util.Scanner;

public class BackupJavaFile1 {
	public static void main(String[] args) throws IOException {
		File dir = getFile();
		listAllFile(dir);
	}

	private static File getFile() {
		Scanner sc = new Scanner(System.in);
		File dir;
		while (true) {
			System.out.println("请输入路径:");
			String next = sc.next();
			dir = new File(next);
			if (!dir.exists()) {
				System.out.println("目录不存在");
				continue;
			} else if (dir.isFile()) {
				System.out.println("请输入目录:");
				continue;
			} else {
				break;
			}
		}

		return dir;
	}

	public static void listAllFile(File dir) throws IOException {
		File[] listFiles = dir.listFiles();
		for (File f : listFiles) {
			if (f.isDirectory()) {
				listAllFile(f);
			} else if (f.isFile() && f.getName().endsWith(".java")) {
				backupFile(f);
			}
		}
	}

	private static void backupFile(File f) throws IOException {
		String srcStartName = f.getName().substring(0,
				f.getName().lastIndexOf("."));
		FileInputStream fis = new FileInputStream(f);
		File dir = new File("e:\\java笔记");
		if (!dir.exists()) {
			dir.mkdir();
		}
		File[] listFiles = dir.listFiles();
		System.out.println(listFiles.length);
		String destStartName;
		String backUpFileName;

		String[] split = f.getParent().split("\\\\");
		backUpFileName = srcStartName + "_" + split[split.length - 1] + ".txt";

		FileOutputStream fos = new FileOutputStream(new File(dir,
				backUpFileName));
		byte[] datas = new byte[1024];
		int len;
		while ((len = fis.read(datas)) != -1) {
			fos.write(datas, 0, len);
		}
		fis.close();
		fos.close();
	}
}

 

上一篇: java io 流

下一篇: ServletConfig接口