import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
public class Test_2 {
public static void main(String[] args) {
copyDir(new File("c:\\demo"), new File("d:"));
}
/*
* 定义方法,实现文件夹复制
*/
public static void copyDir(File source,File target){
//获取数据源文件夹名字
String sourceDirName = source.getName();
//根据数据源文件夹名字,在数据目的,创建出同样文件夹
File targetDir = new File(target,sourceDirName);
//调用方法mkdirs创建文件夹
targetDir.mkdirs();
//获取数据源目录下的全部文件
File[] files = source.listFiles();
for(File f : files){
//获取数据源文件名
String sourceFileName = f.getName();
//将数据目的文件夹和文件名组成File 对象
File targetDirFile = new File(targetDir,sourceFileName);
//调用字节流复制文件方法,传递数据源和数据目的
copyFile(f,targetDirFile);
}
//调用修改文件名的方法
reanme(targetDir);
}
/*
* 定义方法,实现复制后数据目的文件夹,所有文件
*/
public static void reanme(File targetDir){
//对传递过来的文件夹进行遍历,所有的文件
File[] files = targetDir.listFiles();
for(File f : files){
//直接获取文件名
String fileName = f.getName();
//反向搜索.出现的索引
int index = fileName.lastIndexOf('.');
//对文件,进行substring截取
fileName = fileName.substring(0,index)+".java";
//数据目的路径d:\\demo, 截取后的文件名封装File对象
File reNameFile = new File(targetDir,fileName);
//数据源File对象,调用方法renameTo
f.renameTo(reNameFile);
}
}
/*
* 定义方法,实现字节流文件复制,字节数组缓冲
*/
public static void copyFile(File souce,File target){
FileInputStream fis = null;
FileOutputStream fos = null;
try{
fis = new FileInputStream(souce);
fos = new FileOutputStream(target);
byte[] bytes = new byte[1024];
int len = 0 ;
while((len = fis.read(bytes))!=-1){
fos.write(bytes, 0, len);
}
}catch(IOException ex){
throw new RuntimeException("文件复制失败");
}finally{
try {
if (fos != null)
fos.close();
} catch (IOException ex) {
throw new RuntimeException("关闭资源失败");
} finally {
try {
if (fis != null)
fis.close();
} catch (IOException ex) {
throw new RuntimeException("关闭资源失败");
}
}
}
}
}
|
|