这个主要是考的递归和IO流,直到怎么遍历文件夹的所有文件就差不多了。剩下的就是思路了。- /*将d:\\下的所有java文件拷贝到d:\\jad目录下后缀名为.txt
- * 思路:要获取到d:\\下的所有java文件的绝对路径并封装为文件对象,
- * 建立文件读取流关联文件,建立文件写入流,将文件复制到制定目录。
- *
- * 步骤: 1.遍历d:\\ 目录,找出.java文件,文件路径存放到一个文件中
- * 2.读取路径,建立路径文件,关联读取流,复制文件,并将名字改为.txt
- * */
- import java.io.*;
- public class CopyFiles {
- public static void main(String[] args) throws IOException {
- File src=new File("D:\\java\\0924\\day01");
- File findFilePath=new File("D:/findJavaFile.txt");
- File newFilePath=new File("D:/copy_JavaFiles");
- StringBuilder sb=new StringBuilder();
- findFiles(src,sb);
- Writer wr=new FileWriter(findFilePath);
- wr.write(sb.toString());
- wr.close();
-
- copyJavaFile(findFilePath,newFilePath);
-
- }
- private static void copyJavaFile(File findFilePath, File newFilePath) throws IOException {
- if(!newFilePath.exists())
- {
- newFilePath.mkdirs();
- }
- BufferedReader bufr=new BufferedReader(new FileReader(findFilePath));
- String line=null;
- int num=0;
- while((line=bufr.readLine())!=null)
- {
- File f=new File(line);//将每个java存在的路径封装为一个文件对象
- BufferedReader bufr2=new BufferedReader(new FileReader(f));
- BufferedWriter bufw=new BufferedWriter(new FileWriter(new File(newFilePath,f.getName().replaceAll("\\.java", "\\.txt"))));
- String str=null;
- while((str=bufr2.readLine())!=null)
- {
- bufw.write(str);
- bufw.newLine();
- }
- bufr2.close();
- bufw.close();
- num++;
- }
- bufr.close();
- System.out.println("共计"+num+"个java文件拷贝成功!");
-
- }
- public static void findFiles(File dir,StringBuilder sb)
- {
-
- File[] files=dir.listFiles();
-
- for(File f:files)
- {
- if(f.isDirectory())
- {
- findFiles(f,sb);
- }
- else if(f.getName().endsWith(".java"))
- {
- sb.append(f.getAbsolutePath()+"\r\n");
- }
- }
-
- }
-
- }
复制代码
|