/*
将f:\java里的.java文件复制到f:\jad文件夹中并修改后缀名为.jad
分析:
封装数据源和目的地
遍历获取.java文件复制到f:\jad文件夹中
在修改名字
String[] filenamearray = file.list(new FilenameFilter() {
public boolean accept(File dir,String name) {
}
});
*/
import java.io.IOException;
import java.io.File;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.FileReader;
import java.io.FileWriter;
public class CopyAndRename {
public static void main(String[] args) throws IOException {
//封装数据源和目的地
File srcfile = new File("f:\\java");
File destfile = new File("f:\\jad");
//调用方法来复制并修改后缀
CopyAndRename.copy(srcfile,destfile);
File[] destfilearray = destfile.listFiles();
for(File file : destfilearray) {
String name = file.getName();
String newname = name.replace(".java",".jad");
File newFile = new File(destfile,newname);
file.renameTo(newFile);
System.out.println(file.getName() + "---" +file.renameTo(newFile));
}
}
//遍历多级文件夹,并复制以.java结尾的文件至目的地destfile
public static void copy(File srcfile,File destfile) throws IOException {
if(!destfile.exists()) {
destfile.mkdir();
}
//获取源文件中的文件和文件夹对象
File[] filearray = srcfile.listFiles();
BufferedReader br = null;
BufferedWriter bw = null;
for(File file : filearray) {
if(file.isFile()) {
String name = file.getName();
if(name.endsWith(".java")) {
br = new BufferedReader(new FileReader(new File(srcfile,name)));
bw = new BufferedWriter(new FileWriter(new File(destfile,name)));
String line = null;
while((line = br.readLine()) != null) {
//三句连写
bw.write(line);
bw.newLine();
bw.flush();
}
}
}
if(file.isDirectory()) {
//如果是文件夹在遍历并复制里面的.java文件并存放在destfile
copy(file,destfile);
}
}
if(br != null && bw != null) {
br.close();
bw.close();
}
}
}
为什么都改名都是false啊 求大神求解 谢谢!
------解决思路----------------------
file.renameTo(newFile);
System.out.println(file.getName() + "---" +file.renameTo(newFile));
重复了,只能rename一次
------解决思路----------------------
用一个boolean变量接收重命名的操作结果,然后输出,不要再调用一个renameTo()。
File newFile = new File(destfile,newname);
boolean res = file.renameTo(newFile);
System.out.println(file.getName() + "---" + res );