《TIJ》第11章练习3
题目是要求只打开一次文件吗?那只能用RandomAccessFile了,如果不是这么要求,则可以用下面这种解法。原来FileWriter在建立对象的时候,可以指定是覆写还是添加到文件的后面。
3、修改练习2的程序,使能同时开启一个文本文件,并得以将文本写至该文件。请将各行文本及行号写入ArrayList内(请不要企图使用本章提到的那些“LineNumber”classes),然后写入文件。
疑惑:题目是要求只打开一次文件吗?那只能用RandomAccessFile了,如果不是这么要求,则可以用下面这种解法。原来FileWriter在建立对象的时候,可以指定是覆写还是添加到文件的后面。
import java.io.*;
import java.util.*;
public class C11P3 {
/**
* Method main
*
*
* @param args
*
*/
public static void main(String[] args)
throws IOException {
// TODO: Add your code here
if(args.length == 0)
{
System.err.println("请选择文件!");
}
else
{
String fileName = args[0];
BufferedReader br = new BufferedReader(
new FileReader(fileName));
ArrayList al = new ArrayList();
String s = new String();
int rowNumber = 1;
while((s = br.readLine()) != null)
{
al.add(rowNumber++ + ": " + s);
}
br.close();
PrintWriter pw = new PrintWriter(
new BufferedWriter(
new FileWriter(fileName,true)));
Iterator it = al.iterator();
while(it.hasNext())
{
pw.println((String)it.next());
}
pw.close();
}
}
}