最近在开发代码生成器的时候,需要读取模版文件,根据模板替换相应的字符,然后输出所期望的类,因为在java或者C++里面没有直接支持替换的功能,因此在实现模板字符替换的时候,需要编写一定的代码实现替换功能。对模板文件的操作,在 JDK 1.1中,支持两个新的对象 Reader & Writer, 它们只能用来对文本文件进行操作,而 JDK1.1中的 InputStream & OutputStream 可以对文本文件或二进制文件进行操作。
用FileReader 来读取文件的常用方法是:
FileReader fileReader = new FileReader("test.txt");
BufferedReader bufferReader= new BufferedReader(fr);
用 br.readLine() 来读出数据(comment:这里读取方式的是一行一行地),然后用bufferReader.close() 关闭缓存,用fileReader.close() 关闭文件。
用 FileWriter 来写入文件的常用方法是:
FileWriter fileWriter = new FileWriter("new_test.txt");
PrintWriter out = new PrintWriter(fw);
在用out.print 或 out.println 来往文件中写入数据,out.print 和 out.println的唯一区别是后者写
入数据或会自动开一新行。写完后要记得 用out.close() 关闭输出,用fileWriter.close() 关闭文件。
下面地例子是读取一个文件地内容到另外一个文件中:
import java.io.*;
public class TEST {
private static final String TEMPLATE_PATH = "E:"+File.separator;//假设文件放置在E盘
public static void main(String[] args) {
String lineContent = null;//用来存放读取出来地每一行内容
try{
FileReader fr = new FileReader(TEMPLATE_PATH+"test.txt");
BufferedReader br = new BufferedReader(fr);//读取文件test.txt
FileWriter fw = new FileWriter(TEMPLATE_PATH+"new_test.txt");//创建新文件
PrintWriter out = new PrintWriter(fw);
lineContent = new String();
while ((lineContent = br.readLine()) != null) {//判断是否读取了全部数据,
/*
在这里可以做替换动作
*/
System.out.println(lineContent);
out.print(lineContent);//向新文件输入数据
}
out.close();
fw.close();
}catch(Exception e){
e.printStackTrace();
}
}
}