本帖最后由 bingdian107 于 2015-12-12 02:41 编辑
在做IO流的一个测试时,碰到一个难题,代码如下- package cn.itcast_02;
- import java.io.File;
- import java.io.FileReader;
- import java.io.FileWriter;
- import java.io.IOException;
- /*
- * 需求:复制指定目录下的指定文件,并修改后缀名。
- * 指定的文件是:.java文件。
- * 指定的后缀名是:.jad
- * 指定的目录是:jad
- *
- * 数据源:f:\\java\\A.java
- * 目的地:f:\\jad\\A.jad
- 分析:
- A:封装目录
- B:把目录中的对象转换为File集合
- C:遍历集合得到每个File对象,并判断该对象是文件还是文件夹
- 文件:判断是否是以.java结尾
- 是:复制文件到指定目录
- 不是:不用管
- 文件夹:继续封装
- 由此可见,是一个递归的思想
- */
- public class CopyFloder {
- public static void main(String[] args) throws IOException {
- // 写一个方法实现复制指定文件
- //首先判断目标文件夹是否存在,如果不存在则创建
- File dest =new File("f:\\jad");
- if(!dest.exists()){
- dest.mkdir();
- }
- copy("f:\\java",dest);
-
- }
- public static void copy(String src, File dest) throws IOException {
- // 封装目录
- File file = new File(src);
- // 把目录转换为File数组
- File[] fileArray = file.listFiles();
- // 遍历数组得到每个File对象
- for (File f : fileArray) {
- //判断该对象是否是文件,如果是文件再继续判断是否以.java结尾
- if(f.isFile()){
- if(f.getName().endsWith(".java")){
- //如果文件是以.java结尾,把文件复制到目标位置
-
- //封装数据源
- FileReader fr = new FileReader(f);
- //封装目的地
- FileWriter fw = new FileWriter(dest);//报错Exception in thread "main" java.io.FileNotFoundException: f:\jad (拒绝访问。)
- //复制文件,每次复制一个字节数组
- char[] chs = new char[1024];
- int len;
- while((len=fr.read(chs))!=-1){
- fw.write(chs, 0, len);
- }
- //释放资源
- fr.close();
- fw.close();
- }
- }else{
-
- //如果不是文件,再继续封装后判断
- //因为此时的f是File对象,而方法copy的参数需要使用String,所以这里需要用到f的绝对路径
- String ss = f.getAbsolutePath();
- copy(ss,dest);
- }
- }
- }
- }
复制代码 这里只写到了复制的代码,改名的代码还没有写。
报错的地方已经标明,目标目录我已经创建了,为什么提示无法访问呢。这个错误应该怎么解决?
|
|