黑马程序员技术交流社区
标题:
怎么把一个文件夹复制到另一个目录下
[打印本页]
作者:
ithemazl
时间:
2015-8-26 08:38
标题:
怎么把一个文件夹复制到另一个目录下
如题 求解
作者:
pengbeilin
时间:
2015-8-26 08:55
/**
* 复制一个文件夹到另一个目录下.
复制文件夹,首先需要想到递归.因为文件夹是一个层次目录.
其次,如何递归呢?递归什么?当然,只有是文件夹的时候才递归,那么判断是文件夹还是文件就是必要的.是文件夹就递归,是文件就用流读写.
再次,文件夹的命名和文件的命名.两者都需要在旧文件名称和新文件路径命名.我们需要知道,当旧文件夹通过listFiles获得下一级文件时候,
这时候,我们就要想到,
新文件夹和旧文件夹的路径已经相差一级了.
思考:
该题的难点就在于新旧文件和文件夹的路径层次同步问题.每当listFiles之后,新旧文件或文件夹就有了一个层次的差距,
具体如何补足这一个层次差,只要知道 --
旧文件名称和新文件路径命名 -- 就可以了.
*/
public class Demo02 {
public static void main(String[] args) throws IOException{
File oldFile = new File("c:\\aaa");//旧文件夹
File newFile = new File("e:\\");//新路径
MyCopy(oldFile,newFile);
}
public static void MyCopy(File oldFile,File newFile) throws IOException
{
if(!oldFile.exists()) //判断源文件是不是存在,如果不存在,声明.
{
System.out.println("文件不存在");
}
//新的目录,加上旧的文件名.就成了一个新的文件.但是此时还没有具体文件.
File f = new File(newFile.getPath() + "\\" + oldFile.getName());
System.out.println("f:"+f);
f.mkdir(); //创建新的文件夹 &&&重要的一部分.这里是建立一个具体的文件夹,此时新旧文件夹都相同了.
File[] files = oldFile.listFiles(); //列出旧文件夹里的所有文件.
for(File file : files) //遍历这个文件夹里面的文件..
{
if(file.isDirectory()) //如果还是文件夹,就递归.
{
MyCopy(file,f);
}else //否则就可以,用IO流来读写文件了.
{
//这里用的是字节流,用字符流 或是打印流都可以
BufferedInputStream bis = new BufferedInputStream(new
FileInputStream(file));//读文件
BufferedOutputStream bos = new BufferedOutputStream(
new FileOutputStream(f.getPath() + "\\" + file.getName()));//写入 新路径旧名字
int b = 0;
while((b= bis.read())!= -1)
{
bos.write(b);
}
bis.close();
bos.close();
System.out.println(file.getName() + " 拷贝完成!");
}
}
}
}
复制代码
作者:
t_lins
时间:
2015-8-26 09:15
{:2_30:}一起学基础吧
作者:
fantianfei
时间:
2015-8-26 09:35
热心的同学太多了
作者:
ithemazl
时间:
2015-8-26 09:38
pengbeilin 发表于 2015-8-26 08:55
谢谢{:2_30:}
作者:
pengbeilin
时间:
2015-8-26 09:43
ithemazl 发表于 2015-8-26 09:38
谢谢
还有另外一个比这个简单的题,不知道你做了没有,写给你!
题目和思路都有 你把代码写一写
*从键盘接受一个字符串,这个字符串是一个文件目录.
* 将该目录中所有的文件打印在控制台上.
* 思路:
* 1.从键盘录入,得到一个字符串,
* 2.通过该字符串,创建一个文件夹,
* 3.将该文件夹进行遍历,如果还是一个文件夹,那么就进行递归,
* 否则,就将文件名称打印在控制台.
作者:
ithemazl
时间:
2015-8-26 09:46
嗯嗯 好的
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2