黑马程序员技术交流社区
标题:
IO流?????
[打印本页]
作者:
韩秀山
时间:
2013-5-20 22:36
标题:
IO流?????
public static void main(String[] args) throws IOException {
File f1 = new File("G:/练习/Demo_i02/folder");
File f2 = new File("G:/练习/Demo_i02/folder/1111");//路径这里为什么不对啊??????
copy(f1, f2);
}
public static void copy(File f1, File f2) throws IOException {
File f = new File(f2, f1.getName());
f.mkdir();// 在指定的目录下 创建一个文件夹
File[] arr = f1.listFiles();// 接收它的所有子文件路径
for (File file : arr) {
if (file.isFile()) {
FileInputStream fs = new FileInputStream(file);// 这里为什么使用字节流 ???
FileOutputStream fo = new FileOutputStream(new File(f2,f1.getName()));
byte[] lenth = new byte[1024];
int s;
while ((s = fs.read()) != -1) {
fo.write(lenth, 0, s);
}
fs.close();
fo.close();
} else {
copy(file, f);//为什么在这里还要调用这个方法???
}
}
}
作者:
张龙欢
时间:
2013-5-21 00:21
本帖最后由 张龙欢 于 2013-5-21 00:27 编辑
这是拷贝一个文件夹的程序!!File f2 = new File("G:/练习/Demo_i02/folder/1111");//路径这里为什么不对啊??????
因为你这边如果是在G:/练习/Demo_i02/folder的子目录下的话,当你执行到for (File file : arr)里面时, FileOutputStream fo = new FileOutputStream(new File(f2,f1.getName()));它这里会创建 f1里面的子文件,这样你定循环条件是出不去的,相当于死循环了。
FileInputStream fs = new FileInputStream(file);用字节流是因为它有read()方法可以去取文件字节。 copy(file, f);//为什么在这里还要调用这个方法???这句是用的递归思想,它这句的意思就是当你遍历到不是文件的时候就在重新调用该函数。黑马云青年为你解答!
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2