黑马程序员技术交流社区
标题:
关于多级文件夹的复制,有可以简化的地方提下意见
[打印本页]
作者:
爽朗的菜籽
时间:
2014-10-16 00:34
标题:
关于多级文件夹的复制,有可以简化的地方提下意见
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
/*
* 需求:复制多级文件
* 思路:使用File关联源文件和目的文件,目的文件和源文件名一样,只是盘路径不一样
* 定义一个方法,接受的参数是源文件和目的文件
* 使用listFiles方法,将源文件存入File数组中
* 使用高级for遍历File数组,
* 在遍历过程中,每次遍历关联不同路径下的同级目录文件或者文件夹
* 判断遍历的文件是否是目录
* 如果是,同级文件创建文件夹
* 使用递归,调用函数本身,参数是遍历的文件和同级目录文件
* 如果不是,判断是否存在此文件,如果不存在,创建文件
* 因为可能不是纯文本,使用字节流读取操作文件,记得关闭底层资源
*/
public class Copy_1
{
public static void main(String[] args) throws IOException
{
File source = new File("G:\\a - 副本");
File dest = new File("d:", source.getName());
if(!dest.exists())//这一步必须要有,否则系统出错-“系统找不到指定路径”
{
dest.mkdir();
}
copyFile(source, dest);
}
private static void copyFile(File source, File dest) throws IOException
{
File[] files = source.listFiles();
for(File file : files)
{
System.out.println(file);
File newFile = new File(dest, file.getName());
if(file.isDirectory())
{
if(!newFile.exists())
{
newFile.mkdir();
}
copyFile(file, newFile);
}else
{
FileInputStream fis = new FileInputStream(file);
FileOutputStream fos = new FileOutputStream(newFile);
byte[] bt = new byte[1024];
int len = 0;
while((len=fis.read(bt))!=-1)
{
fos.write(bt, 0, len);
}
fis.close();
fos.close();
}
}
}
}
复制代码
作者:
就是现在
时间:
2014-10-16 22:32
不错啊!
作者:
FlyFish
时间:
2014-10-17 15:27
不错啊!
作者:
任献东
时间:
2014-10-17 19:11
为什么不用缓冲呢?
作者:
朴日男
时间:
2014-10-17 20:33
递归方法里 放new , 看着有点不爽 囧 , 额 别在意, 我的习惯. -0 -
作者:
rehan
时间:
2015-2-26 10:59
这个例子真心不错,我之前做的是复制所有的文件,但是没有建立相应的文件夹
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2