[置顶] 使用java来把一个目录下的所有文件拷贝到另外一个目录下,并且重命名

时间:2021-11-12 12:24:46

import java.io.File;
import java.io.FileReader;
import java.io.FileWriter;


public class HandleFilename {

public static String destDir = "D:\\MyCopyFile";

public static void main(String[] args) throws Exception{

createDestDir(destDir);

String pathname = "D:\\WDJDownload\\Apps\\Hair Salon\\assets";
File file = new File(pathname);
handleFile(file);


}

/**
* 创建一个新的目录
* @param dirName
*/
public static void createDestDir(String dirName){
File file = new File( dirName);
if(!file.exists()){
file.mkdir();
}
}

/**
* 遍历每一个文件...
* @param file
* @throws Exception
*/
public static void handleFile(File file) throws Exception{
File[] files = file.listFiles();
System.out.println("------------> files.length: " + files.length);
for(File f : files){
if(f.isDirectory()){
handleFile(f);
}else{
/**
* file.canWrite():判断文件是否可写....
*/
//System.out.println("--------> file.canWrite()" + file.canWrite());
//System.out.println("--------> file.canRead()" + file.canRead());
//System.out.println("--------> file.canExecute()" + file.canExecute());
System.out.println( "-------------->" + f.getName());
copyFile(f);
}
}
}

/**
* 复制一个文件
* @param file
* @throws Exception
*/
public static void copyFile(File file) throws Exception{

String oldFileName = file.getName();
if(oldFileName.endsWith("_jpg")){//修改后缀名...
oldFileName = oldFileName.replace("_jpg", ".jpg");
}else if(oldFileName.endsWith("_png")){
oldFileName = oldFileName.replace("_png", ".png");
}

String newFileName = oldFileName;
/**
* file.getAbsolutePath(): 返回带文件名的绝对路径...
*/
System.out.println("----------->file.getAbsolutePath(): " + file.getAbsolutePath());
System.out.println("----------->file.getName(): " + file.getName());

FileReader reader = new FileReader(file.getAbsolutePath() );
FileWriter writer = new FileWriter(destDir + "\\" + newFileName);

int ch;
while((ch = reader.read()) != -1){
writer.write(ch);
}

reader.close();
writer.close();
}
}