黑马程序员技术交流社区

标题: IO中批量修改文件后缀名,要求先修改再复制。 [打印本页]

作者: 小马过河    时间: 2013-11-18 00:59
标题: IO中批量修改文件后缀名,要求先修改再复制。
代码如下,分成2个部分的话,无论是进行copy还是进行改名都没有问题,问题就出现在一起操作的时候执行提示错误:
Exception in thread "main" java.io.FileNotFoundException: d:\day1105 (拒绝访问。)        at java.io.FileInputStream.open(Native Method)        at java.io.FileInputStream.<init>(FileInputStream.java:138)        at java.io.FileInputStream.<init>(FileInputStream.java:97)        at java.io.FileReader.<init>(FileReader.java:58)        at exam.ReCopy.main(ReCopy.java:27)网路上参考了部分意见,不能解决。来这里请教,是因为修改后的文件还是引用指向状态,所以无法被读写复制?


package exam;

import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.FilenameFilter;
import java.io.IOException;

public class ReCopy {
        public static void main(String[] args) throws IOException {
                File temp = new File("d:\\day1105");
                File[] fileArray = temp.listFiles(new FilenameFilter() {
                        //这里进行文件判断,是否为文件,是否符合后缀名.java。
                        public boolean accept(File dir, String name) {
                                return new File(dir, name).isFile() && name.endsWith(".java");
                        }
                });

                for (File file : fileArray) {
                        String newName = file.getName().replace(".java",".jjjj");
                        File newFile = new File(temp,newName);
                        file.renameTo(newFile);
                }
               
                BufferedReader br = new BufferedReader(new FileReader("d:\\day1105"));
                BufferedWriter bw = new BufferedWriter(new FileWriter("f:\\day"));
                //进行写入
                int len = 0;
                while((len=br.read())!=-1){
                        bw.write(len);
                }
                br.close();
                bw.close();               
               
               
        }
}



作者: zuiaichiyu    时间: 2013-11-18 12:18
BufferedReader br = new BufferedReader(new FileReader("d:\\day1105"));
这句话的错误在于,BufferedReader包装的是一个文件对象,而你的对象是一个文件夹,不是一个具体的文件,如果要拷贝文件夹的话IO对象只能包装文件,文件夹需要使用File对象的功能创建




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2