复制文件或文件夹时,可以写一个方法,接受两个File类型参数。一个是要复制的文件,另一个是要复制的地方。方法具体大概是这样,先判断 源文件是文件还是文件夹,如是文件,就在目标路径里用字节流复制该文件。关键在于如何在目标路径里复制文件。可以创建一个File对象参数为目标对象+源文件.getName()。如果是文件夹,就在目标路径里复制一个文件夹,即创建一个File对象构造参数为目标+源文件路径.getName. 在用File对象的 mkdir 在本地创建文件夹。 然后获取要复制的文件夹中的文件。遍历这个文件数组。开始递归。是文件就复制文件,是文件夹就复制文件夹,获取文件夹里的文件继续。直到没有文件夹为止。
代码
package com.IO.www;
import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
public class MyMdir {
public static void main(String[] args) throws IOException {
// TODO Auto-generated method stub
File f=new File("D:\\JVM");
File f1=new File("C:");
CopyFile(f, f1);
}//复制文件或文件的方法
private static void CopyFile(File src,File target) {
if(src.exists()){
//判断路径表示的是否是目录,如是
if(src.isFile()){
//在目标路径里创建该文件复制文件
File file=new File(target+"\\"+src.getName());
//如果该路径代表的文件已存在,则另起他名。我用的是win的方式加复制文件二字。
if(file.exists()){
file=new File(target+"\\"+"复制文件"+System.currentTimeMillis()+src.getName());
}
BufferedInputStream bin=null;
BufferedOutputStream bout=null;
try{
bin=new BufferedInputStream(new FileInputStream(src));
bout=new BufferedOutputStream(new FileOutputStream(file));
byte buf[]=new byte[1024];
int len=0;
while((len=bin.read(buf))!=-1){
bout.write(buf, 0, len);
}
}catch(IOException e){
e.printStackTrace();
System.out.println("文件复制失败");
}finally{
if(bin!=null){
try {
bin.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}if(bout!=null){
try {
bout.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
//判断目标是否是文件夹,如是
}if(src.isDirectory()){
//创建在目标路劲里原路径的文件夹对象
File file=new File(target+"\\"+src.getName());
if(file.exists()){
file=new File(target+"\\"+"复制文件夹"+System.currentTimeMillis()+src.getName());
}
//在本地创建文件夹
file.mkdir();
//获取文件夹中的文件
File[]files=src.listFiles();
for(File f:files){
//递归,再次复制文件或文件夹
CopyFile(f,file);
}
}
}else{
System.out.println("您要复制的文件不存在");
}
}
}