下面的代码把 BufferedWriter writer = new BufferedWriter(new FileWriter(file));
放到 String line = reader.readLine(); 前面为什么就出错?
public static void test1(){
File file = new File("D:/test.txt");
try {
BufferedReader reader = new BufferedReader(new FileReader(file));
String line = reader.readLine();
BufferedWriter writer = new BufferedWriter(new FileWriter(file));
writer.write(line);
writer.flush();
reader.close();
writer.close();
} catch (IOException e) {
e.printStackTrace();
}
}
test.txt文件中原先有以后字符,程序运行后,就没有了,如果把那两行代码换回去,就还会写回去。
或者写入到一个新文件new.text也正常,跟那两行代码顺序没关系。
这个是为什么啊?
在使用BufferedReader和BufferedWriter 要注意:
读不会修改文件,所以同一个file声明多个reader来读,没有问题,
但是写会修改文件,所以在对一个file绑定了writer之后,不能再读了,也不能再声明其它writer到这个file,所以可以说writer是独占的,
如果你调试一下 可以发现,在声明writer之后,file所指定的文件内容会变成空,
所以你将
BufferedWriter writer = new BufferedWriter(new FileWriter(file)); 提到read之前会报NullPointerException
希望能给楼主帮助~~
纯手工打造,还请楼主采纳~~
下面是多个reader一个writer的例子:
package test;