黑马程序员技术交流社区
标题:
一个关于文件写入的疑问
[打印本页]
作者:
韩伟
时间:
2012-8-1 14:23
标题:
一个关于文件写入的疑问
当我要写入文件到硬盘时可以这样做:
BufferedWriter bf = new BufferedWriter(new FileWritrt("F:\\a.txt"));
bf.write("abc");
bf.newLine();
bf.flush();
可是这样的话每次close之后再写入就会创建一个新的文件,而原来的文件将全部丢失。
但是我希望能在原来的文件下追加内容怎么操作呢。我发现除了RandomAccessFile类中标记为'r'的可以不删除文件对文件进行访问外就不知道其他的了。
有没有一个方法想C里面那样open文件,如果存在就打开,不存在就创建?
作者:
郑文博
时间:
2012-8-1 14:39
毕老师所说的“面盆原理”。每次都是new一个新的缓冲区是达到了清除的目的但是旧的就成为了垃圾,造成内存泄露。
如果想要单纯的清除操作,可以调用clear()方法。
如果本段代码存在for或者while循环中的话,可以把BufferedWriter bf = new BufferedWriter(new FileWritrt("F:\\a.txt"));提到循环外解决。
作者:
李东升
时间:
2012-8-1 14:57
把你的伪代码改了下,你运行一遍看看是不是在a.txt文件中写入了abcabc。
public static void main(String[] args) {
BufferedWriter bf;
try {
bf = new BufferedWriter(new FileWriter("a.txt"));
bf.write("abc");
bf.write("abc");
bf.newLine();
bf.flush();
} catch (IOException e) {
e.printStackTrace();
}
}
复制代码
你所说的文件存在则打开,不存在就创建,这个好像要用到File类的方法。
作者:
韩伟
时间:
2012-8-1 19:50
上面两位大侠好像没明白我的意思,我是说如果在程序运行前a.txt文件已经存在且有数据,我再运行自己的程序往里面写数据,只要我程序里面有new FileWritrt("F:\\a.txt"),那么原来的a.txt文件就会被覆盖了,数据也没了。
我该怎么保证原来数据存在的情况下写入数据呢
作者:
朱烈葵
时间:
2012-8-1 20:42
BufferedWriter bf = new BufferedWriter(new FileWritrt("F:\\a.txt",true)); //FileWriter(String fileName, boolean append)
构造函数上面有把构造函数看下就会明白的
作者:
赵俊杰
时间:
2012-8-1 22:37
import java.io.*;
public class test {
public static void main(String[] args) throws IOException
{
//重点在new FileWriter中的boolean参数,为false时本次写入将覆盖文件中原来的内容,为true时在则原来的基础上追加新的内容
BufferedWriter br=new BufferedWriter(new FileWriter("c:/a.txt",false));
br.append("*");
br.close();
}
}
作者:
赵俊杰
时间:
2012-8-1 22:38
import java.io.*;
public class test {
public static void main(String[] args) throws IOException
{
//重点在new FileWriter中的boolean参数,为false时为覆盖文件中原来的内容,为true时在原来的基础上追加新的内容
BufferedWriter br=new BufferedWriter(new FileWriter("c:/a.txt",false));
br.append("*");
br.close();
}
}
复制代码
作者:
hello world
时间:
2012-8-1 23:01
FileWriter
public FileWriter(String fileName, boolean append)
throws IOException根据给定的文件名以及指示是否附加写入数据的 boolean 值来构造 FileWriter 对象。这样就可以在文件末尾追加信息了。
作者:
韩伟
时间:
2012-8-2 08:24
原来如此,我竟然没有发现这一点儿,真是惭愧啊!
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2