Java基础面试操作题: File IO 文件过滤器FileFilter 练习 把一个文件夹下的.java文件复制到另一个文件夹下的.txt文件

Java基础面试操作题: File IO 文件过滤器FileFilter 练习 把一个文件夹下的.java文件复制到另一个文件夹下的.txt文件

package com.swift;

import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.io.UnsupportedEncodingException;

public class Copy_java_To_txt {

    public static void main(String[] args) {
        /*
         * 把一个文件夹下的.java文件复制到另一个文件夹下的.txt文件
         */
        try {
            StringBuffer sb = new StringBuffer();
            BufferedReader br = new BufferedReader(
                    new InputStreamReader(new FileInputStream("e:\neck\test.java"), "utf-8"));
            String str;
            while ((str = br.readLine()) != null) {
                System.out.println("从文件中读取了一行...");
                sb.append(str);
                sb.append("
");
            }
            
            System.out.println("文件读取到容器成功"+"
"+sb.toString());
            
            String dir="e:\apple";
            String fileName="test.txt";
            File file=new File(dir,fileName);
            if(!file.getParentFile().exists()) {
                System.out.println(file.getParentFile()+"目录不存在,即将创建...");
                file.getParentFile().mkdirs();
            }else {
                System.out.println("目录存在,不用创建...");
            }
            BufferedWriter bw=new BufferedWriter(new OutputStreamWriter(new FileOutputStream(file),"utf-8"));
            bw.write(sb.toString());
            bw.flush();

        } catch (UnsupportedEncodingException e) {
            e.printStackTrace();
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }

}

上面是指定哪个文件进行复制

下边是搜索出所有的以.java结尾的文件复制到另一个文件夹并改名

需要用到下边的两种列表

list()方法是返回某个目录下的所有文件和目录的文件名,返回的是String数组

listFiles()方法是返回某个目录下所有文件和目录的绝对路径,返回的是File数组

package com.swift;

import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileFilter;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.io.UnsupportedEncodingException;

public class Copy_java_To_txt {

    public static void main(String[] args) {
        /*
         * 把一个文件夹下的.java文件(需要搜索所有以.java结尾的文件)复制到另一个文件夹下的.txt文件(改名为.txt的文件)
         */
        File[] files = null;
        try {
            StringBuffer sb = new StringBuffer();
            File dir_source = new File("e:\neck");
            File dir_destination = new File("e:\apple");
            
            if(!dir_destination.exists()) {
                dir_destination.mkdirs();
            }
            
            if (dir_source.exists()) {
                System.out.println("搜索地址存在...");
                if (dir_source.isDirectory()) {
                    System.out.println("此地址是一个目录...");
                    files = dir_source.listFiles(new FileFilter() {

                        @Override
                        public boolean accept(File arg0) {
                            return arg0.getName().endsWith(".java");
                        }
                    });
                } else {
                    System.out.println("此地址不是目录...");
                }
            } else {
                System.out.println("搜索地址不存在...");
            }

            for (File f : files) {
                System.out.println(f);
                BufferedReader br = new BufferedReader(new InputStreamReader(new FileInputStream(f), "utf-8"));
                String str;
                while ((str = br.readLine()) != null) {
                    System.out.println("从文件中读取了一行...");
                    sb.append(str);
                    sb.append("
");
                }

                System.out.println("一个 文件读取到容器成功" + "
" + sb.toString());

                BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(
                        new FileOutputStream(new File(dir_destination, f.getName().replaceAll(".java", ".txt"))),
                        "utf-8"));
                bw.write(sb.toString());
                bw.flush();
                sb.delete(0, sb.length());//也可以sb.setLength(0);sb= new StringBuffer();都可以清空StringBuffer
                
            }
        } catch (UnsupportedEncodingException e) {
            e.printStackTrace();
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }

}