黑马程序员_备份同一类文件(.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接口