通过输入源地址,和目标地址完成文件夹及里面文件的拷贝
public static void main(String[] args) {
copy("D:\\Temp","D:\\java\\123");
//第一个字符串为源,第二个字符串为目标地址
}
/**
*文件夹,或者文件的拷贝
* @param s copy resours
* @param s1 tagert path
*/
private static void copy(String s, String s1) {
File file1 = new File(s);
//创建源的File对象
File[] f = file1.listFiles();
//获取源文件路径下所有子文件及文件夹
//使用for循环对源进行遍历,当f下元素个数为0时,for不执行
for(File ff:f){
//获取目标文件夹下,对应源文件夹下的绝对路径
File file3 = new File(s1+"\\"+ff.getName());
//判断是否为文件夹
if(ff.isDirectory()){
//创建对应的文件夹
//如果还有文件夹,递归,直到没有文件夹或只有文件
copy(ff.getAbsolutePath(),s1+"\\"+ff.getName());
//判断是否已经存在
if(!file3.exists()){
file3.mkdirs();//在目标地址下创建对应的文件夹
}
}else {
//如果不是文件夹,即文件,通过文件流进行拷贝
FileInputStream fin= null;
FileOutputStream fout = null;
try {
fin = new FileInputStream(ff.getAbsoluteFile());
fout = new FileOutputStream(file3.getAbsoluteFile());
int count =0;
byte[] bytes = new byte[1024*1024];
while ((count = fin.read(bytes) )!= -1){
fout.write(bytes,0,count);
}//刷新
fout.flush();
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}finally {
//关闭流
if (fin != null) {
try {
fin.close();
} catch (IOException e) {
e.printStackTrace();
}
}
if (fout != null) {
try {
fout.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
}
}