黑马程序员技术交流社区
标题:
有个问题,大家来共同探讨一下。
[打印本页]
作者:
bingdian107
时间:
2015-12-12 02:38
标题:
有个问题,大家来共同探讨一下。
本帖最后由 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);
}
}
}
}
复制代码
这里只写到了复制的代码,改名的代码还没有写。
报错的地方已经标明,目标目录我已经创建了,为什么提示无法访问呢。这个错误应该怎么解决?
作者:
魏志林
时间:
2015-12-12 11:29
你那个dest只是一个路径,没有文件名.后缀名,不是一个文件,所以打不开,建议建一个文件demo.txt
作者:
bingdian107
时间:
2015-12-13 00:23
魏志林 发表于 2015-12-12 11:29
你那个dest只是一个路径,没有文件名.后缀名,不是一个文件,所以打不开,建议建一个文件demo.txt ...
恩,是的。忽略了,真够弱智的了。。。。
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2