`
IT_nice
  • 浏览: 8658 次
  • 性别: Icon_minigender_1
  • 来自: 广州
最近访客 更多访客>>
社区版块
存档分类
最新评论

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

阅读更多

------- 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();
	}
}

 

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics