- /*
- 需求:把指定文件夹下的所有.java文件复制到另一个目录下,
- 并把文件改为.txt。
- 分析:因为文件夹下可能还有文件夹,要先对指定文件夹进行递归,
- 在递归的过程中加上判断文件后缀名为.java,存入集合中。
- 建立流从集合读写。
- */
- import java.io.*;
- import java.util.*;
- class CopyFiles
- {
- public static void main(String[] args)
- {
- copyTo();
- }
- public static void copyTo()
- {
- File dir1 = new File("G:\\java test\\day01");
- File dir2 = new File("C:\\day01");
- if(!dir2.exists())
- dir2.mkdir();
- List<File> list = new ArrayList<File>();
- getFiles(dir1,list);
- BufferedReader bfr = null;
- BufferedWriter bfw = null;
- try
- {
- for(File files : list)
- {
- //建立流对象疯狂的读写。
- bfr = new BufferedReader(new FileReader(files));
- bfw = new BufferedWriter(new FileWriter(dir2+File.separator+ files.getName()));
- String str = null;
- while ((str = bfr.readLine())!= null)
- {
- bfw.write(str);
- bfw.newLine();
- bfw.flush();
- }
- }
- }
- catch (IOException e)
- {
- throw new RuntimeException("复制失败");
- }
- finally
- {
- try
- {
- if( bfr != null)
- bfr.close();
- }
- catch (IOException e)
- {
- throw new RuntimeException("关流失败");
- }
- try
- {
- if( bfw != null)
- bfw.close();
- }
- catch (IOException e)
- {
- throw new RuntimeException("关流失败");
- }
- }
- }
- //把指定的文件存集合。
- public static void getFiles(File dir, List<File> list)
- {
- File[] files = dir.listFiles();
- for (int x = 0; x < files.length ; x++ )
- {
- if(files[x].isDirectory())
- getFiles(files[x],list);
- else
- {
- //判断是不是.java文件。
- if(files[x].getName().endsWith(".java"))
- {
- //把.java文件改.txt。
- files[x].getName().replace(".java",".txt");
- list.add(files[x]);
- }
- }
- }
-
- }
- }
复制代码 |