关于使用递归和IO流去复制一个文件夹及其内部内容的

Juweer_ni 2016-12-09 06:17:42
public class Demo07 {
//定义一个方法,输入两个路径
public void IOCopy(String path, String path1) {
//定义两个文件
File file = new File(path);
File file1 = new File(path1);
//如果输入的文件不存在,输出不存在
if (!file.exists()) {
System.out.println(file.getName() + "文件不存在");
} else {
System.out.println("存在");
}
//定义一个byet型数组,接收这个文件
byte[] b = new byte[(int) file.length()];
//如果这个文件是一个文件
if (file.isFile()) {
try {
FileInputStream is = new FileInputStream(file);
FileOutputStream ps = new FileOutputStream(file1);
is.read(b);
ps.write(b);
} catch (Exception e) {
e.printStackTrace();
}
} else if (file.isDirectory()) {
if (!file.exists())
file.mkdir();
String[] list = file.list();
for (int i = 0; i < list.length; i++) {
this.IOCopy(path + "/" + list[i], path1 + "/" + list[i]);
}
}
}
public static void main(String args[]) {

new Demo07().IOCopy("D:\\device", "D:\\TDDOWNLOAD");
}
}


这里面我有两个地方看不懂,
1.if (!file.exists())
file.mkdir();
这两行代码的意义,明明已经判断是文件夹了,为什么还进行个判断,而且这个判断也没啥意义.
2.this.IOCopy(path + "/" + list[i], path1 + "/" + list[i]);
这里面的"/"是什么意思啊?

还有如果用行列做的话,怎么做比较好呢,求大神帮忙
...全文
184 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
嘻哈愚者 2016-12-09
  • 打赏
  • 举报
回复
1.if (!file.exists())这是意思是如果目录不存在 file.mkdir();//就创建目录(前提示父目录存在) 如果父目录不存在用 file.mkdirs()就会连父目录一起创建 2.this.IOCopy(path + "/" + list[i], path1 + "/" + list[i]); 这里面的"/"是相对路径表示。 创建文件时有2种写法,一种是绝对路径,一种是相对路径 如: File f = new File("C:\\/笔记.txt");//绝对路径 File f = new File("src/笔记.txt");//相对路径 你可以看看API里面有路径的获得方法还有输出格式。
萧乡月夜 2016-12-09
  • 打赏
  • 举报
回复
请忽略上楼。 这里看代码只是实现了浅复制,并没有用递归实现深复制。 1.

} else if (file.isDirectory()) {
            if (!file.exists())
                file.mkdir();
改成

} else if (file.isDirectory()) {
            if (!file1.exists())
                file1.mkdir();
即如果需要复制的是一个目录且目标目录不存在,就创建目标目录。 2."/"意义是路径和文件名的分隔符,用File.separator更好一些 3.行列是什么意思?
萧乡月夜 2016-12-09
  • 打赏
  • 举报
回复

} else if (file.isDirectory()) {
            if (!file.exists())
                file.mkdir();
改成

} else if (file1.isDirectory()) {
            if (!file1.exists())
                file1.mkdir();

62,615

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧