最近在看《java编程思想》一书,里面的示例代码真心很好,但是遇到个问题就是从网上搞来的代码包解压之后拿到eclipse中不能直接用,原因也很明显,书中的代码虽按包的结构来归纳代码,却没有在其中的*.java中加入对应的包名(e.g.,package concurrency)。于是乎需要读者手动给每个文件的第一行加上这么一句。。。由于文件量巨大,此时实在繁琐。
于是,我就写了下面这么个简陋但还算实用的工具类,可以一次性将所有文件修改好。这个类正好用到了这段时间学习到javaI/O系统,正则表达式等相关知识,也算是对所学内容的阶段性总结下。
import java.io.*;
import java.util.regex.Pattern;
public class testtools {
public static void main(String[] args) throws IOException {
String path="D:\\workspace\\fortest\\src\\concurrency\\";
File file = new File(path);
String [] string = file.list(new FilenameFilter(){ //匿名内部类
@Override
public boolean accept(File arg0, String name) {
return Pattern.compile([ST]\\w+.java")
.matcher(name).matches();//正则表达式,匹配S或T开头的字母组成的后缀为java的文件。
}
});
for(String ss: string){
BufferedReader in = new BufferedReader(new FileReader(
path+ss));
String s;
StringBuilder sb = new StringBuilder();
while ((s = in.readLine()) != null) {
sb.append(s + "\n");
}
in.close();
BufferedWriter out = new BufferedWriter(new FileWriter(
path+ss));
out.write("package concurrency;\n" + sb);
out.close();
}
}
}