今天在看《Head First 設計模式》這本書,書是好書,但是源碼寫的太碎了,並且每個源碼文件都只有幾行,看起來很不方便。於是便想將每章的所有源碼收集成單獨的一個大文本文件中,方便閱讀。
下面是我用Java寫的一個小程序,用python的話應該更簡單,但是懶得折騰了。
import java.io.*;
public class TextFileCollector{
public static void main(String[] args) {
//要收集的文件夾路徑
String srcFolder = "D:/JavaApp/headfirst設計模式源代碼/observer/WeatherStation";
//要收集的文件後綴
String suf = ".java";
//目標文件所在的文件夾
String dstFolder = "D:/JavaApp/acm/";
//目標文件名稱
String dstFile = "2.java";
//得到目標文件所在的文件夾的文件列表
String[] fileList = new File(srcFolder).list(new MyFilenameFilter(suf));
TextFileCollector tc = new TextFileCollector();
for(String name : fileList)
{
tc.changeTxtFile(srcFolder, name, dstFolder, dstFile);
}
}
/*
* 將源文本文件的內容拷貝到指定的目標文件。
* srcFolder:源文件所在的文件夾路徑
* srcFile:源文件名稱
* dstFolder:目標文件所在的文件夾路徑
* dstFile:目標文件名稱
* */
public void changeTxtFile(String srcFolder, String srcFile, String dstFolder, String dstFile)
{
FileReader fr = null;
FileWriter fw = null;
//boolean append = true;
try{
fr = new FileReader(new File(srcFolder+"/"+srcFile));
fw = new FileWriter(new File(dstFolder+"/"+dstFile), true);
BufferedReader br = new BufferedReader(fr);
String row;
fw.append("//"+srcFile+"\n");
while((row=br.readLine()) != null)
{
fw.append(row+"\n");
}
fw.write("\n\n");
fr.close();
fw.close();
}
catch(FileNotFoundException e)
{
e.printStackTrace();
}
catch (IOException e)
{
e.printStackTrace();
}
}
}
class MyFilenameFilter implements FilenameFilter
{
private String suffix;
public MyFilenameFilter(String suffix)
{
this.suffix = suffix;
}
@Override
public boolean accept(File dir, String name) {
// TODO Auto-generated method stub
boolean flag = name.endsWith(suffix);
return flag;
}
}