黑马程序员技术交流社区
标题:
复制文件夹
[打印本页]
作者:
马到成功2014
时间:
2014-7-6 10:01
标题:
复制文件夹
虽然花了点时间 不过还是基本可以复制了
// 列出一个文件夹所有文件的方法,来进行复制整个文件夹
public static void showDir(File file,File file2) throws IOException {
File[] files = file.listFiles();
for (int i = 0; i < files.length; i++) {
if (files
.isDirectory()){
File temp=new File(file2+"\\"+files
.getName());
file2=temp;
file2.mkdir();
showDir(files
,temp);
}else{
File copy=new File(file2+"\\"+files
.getName());
toCopy(files
.toString(),copy.getPath());
if(!copy.exists())
copy.createNewFile();
}
}
}
/*
* sourcePath:源文件地址
* targetPath:目标文件地址
* 此功能实现复制文件内容,从sourcePath复制到targetPath
*/
public static void toCopy(String sourcePath,String targetPath){
File sourceFile=new File(sourcePath);
File targetFile=new File(targetPath);
//缓冲区初始化,因为有考虑到不是纯文件,用字节流
BufferedInputStream bis=null;
BufferedOutputStream bos=null;
try {
bis=new BufferedInputStream(new FileInputStream(sourceFile));
bos=new BufferedOutputStream(new FileOutputStream(targetFile));
byte[] bt=new byte[1024];
int len=0;
while((len=bis.read(bt))!=-1){
bos.write(bt, 0, len);
bos.flush();
}
} catch (FileNotFoundException e) {
// TODO 自动生成的 catch 块
e.printStackTrace();
} catch (IOException e) {
// TODO 自动生成的 catch 块
e.printStackTrace();
}finally{
try{
if(bis!=null)
bis.close();
if(bos!=null)
bos.close();
}catch(IOException e){
e.printStackTrace();
}
}
}
public static void main(String[] args) {
File file=new File("d:\\aa"); //源文件
File fileCopy=new File("e:\\ab"); //目标文件
if(!fileCopy.exists())//初次创建目标文件夹
fileCopy.mkdir();
try {
showDir(file,fileCopy);
} catch (IOException e) {
// TODO 自动生成的 catch 块
e.printStackTrace();
}
}
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2