用java完成两个文件之间可拷贝
先对源文件的目录进行遍历新建,接着目标对文件指定的相对路径下进行创建,以此完成拷贝
代码实现:
package iO;
import java.io.*;
import java.io.File;
public class CopyAll {
public static void main(String[] args) {
//拷贝源
File srcFile=new File("D:\\LC\\新建文件夹");
//拷贝目标
File destFile=new File("C:\\");
//调用拷贝的方法
copys(srcFile,destFile);
}
/*拷贝方法*/
private static void copys(File srcFile, File destFile) {
//如果当前的是文件的话
if(srcFile.isFile()){
/*是文件的时候需要拷贝
* 边读边写*/
FileInputStream in=null;
FileOutputStream out=null;
try {
in=new FileInputStream(srcFile);//读取
/*目标目录文件+源盘符后的文件路径
* 三目运算符:如果文件路径结尾没有有"\\"则加上*/
String sof=(destFile.getAbsolutePath().endsWith("\\") ? destFile.getAbsolutePath() : destFile.getAbsolutePath()+"\\")+srcFile.getAbsolutePath().substring(3);
out=new FileOutputStream(sof);//写出
byte[] bytes=new byte[1024*1024];//一次复制1Mb
int count=0;
while ((count=in.read(bytes))!=-1){
out.write(bytes,0,count);
}
out.flush();
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} finally {
if(in!=null){
try {
in.close();
} catch (IOException e) {
e.printStackTrace();
}
}
if(out!=null){
try {
out.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
return;
}
//获取源文件的子目录
File[] files=srcFile.listFiles();
for(File file:files){
//如果file是一个目录的话
if(file.isDirectory()){
//新建对应目录
String srcDir=file.getAbsolutePath();//源目录绝对路径
//目标目录当前的绝对路径+源目录的目录路径,srcDir.substring(3)将源文件的盘符分割
String desDir=(destFile.getAbsolutePath().endsWith("\\")? destFile.getAbsolutePath() : destFile.getAbsolutePath()+"\\")+srcDir.substring(3);
File newFile=new File(desDir);//将目标目录路径新建
//如果对对象不存在
if(!newFile.exists()){
newFile.mkdirs();//新建目录
}
}
/*递归当前获取到的文件*/
copys(file,destFile);//递归
}
}
}
再main方法中输入目标相对应的绝对路径即可进行文件的拷贝