- package com.itheima.test;
- import java.io.*;
- /*
- * 需求:
- * 搜索 "C:\Users\Dell\Workspaces\MyEclipse 10" 所有".java" 文件, 扩展名改成 ".txt"
- * 复制到 "D:\newText"
- *
- * 需解决问题: 如果是用户 肯定也希望 复制地址 直接粘贴, 不可能让用户挨个修改 "\" "/" 吧.
- */
- public class Test12
- {
- public static void main(String[] args) throws IOException
- {
- String srcPath = args[0];//原来有传参数的方法啊!!!,学习!!!
- String desPath = args[1];
- srcPath = srcPath.replaceAll("\\\\", "/"); // 求解释...为什么是\\\\ 4个?
- // 2个表示 \ 运行出错,
- desPath = desPath.replaceAll("\\\\", "/"); // 我觉得是("\\","/")
- // 为什么是4个呢?2个是错的
- File srcDir = new File(srcPath);
- File desDir = new File(desPath);
- if (!desDir.exists())
- {
- desDir.mkdirs();
- }
- copy(srcDir, desDir);
- }
- public static void copy(File srcDir, File desDir) throws IOException
- {
- // ----这个是我不会的--->. <---
- // -----指定目录下有文件夹,文件夹里也有.java文件,该怎么写呢?除了递归有别的方法吗?--
- File[] javaFiles = srcDir.listFiles(new FilenameFilter()
- {
- public boolean accept(File dir, String name)
- {
- return new File(dir, name).isFile() && name.endsWith(".java");
- }
- });
- // -----------------接口匿名实现 好厉害 ,不懂File过滤器 T. T ---------------------
- for (File javaFile : javaFiles)
- {
- String fileName = javaFile.getName();// 我一般都是取AbsolutePath得,
- // 你这个方法小巧实用,学习.
- String newFileName = fileName.replace(".java", ".txt");
- File desFile = new File(desDir, newFileName);
- BufferedReader bufr = new BufferedReader(new FileReader(javaFile));
- BufferedWriter bufw = new BufferedWriter(new FileWriter(desFile));
- String line = null;
- while ((line = bufr.readLine()) != null)
- {
- bufw.write(line);
- bufw.newLine();
- bufw.flush();
- }
- bufw.close();
- bufr.close();
- }
- System.out.println("复制并改名成功");
- }
- }
复制代码
谢谢, 代码整洁, 效率; :) |