我注意到输出流类(缓冲输出流)的行为,我想了解它来解决我的问题,当我创建一个对象来在文件中写入文本数据时,它是可以的但是当我再次尝试用同一个类的另一个对象,它工作正常,但用新的
替换以前的文本class writeFile extneds BufferedOutputStream{
public static void main(String arg[]) throws FileNotFoundException, IOException
{
new writeFile(new FileOutputStream(file)).setComments("hello");
new writeFile(new FileOutputStream(file)).setComments("Hi");
}
public void setComments(String s) throws IOException
{
this.write(this.setBytes(s+"\r\n\n"));
this.write(this.setBytes("-----------------------------------\r\n\n"));
}
当执行它时,我发现只有Hi字,第一个字不存在,因为它被替换为最后一个,所以为什么当我使用另一个对象写一些文本时,它从开始写入并在之前替换并且有任何解决方案,因为当我关闭程序并再次打开它时,它将是对象的新声明,这被视为新对象
答案 0 :(得分:1)
有一个FileOutputStream(String, boolean)
构造函数,其中第二个参数是追加。我看到最容易修复,更改
new writeFile(new FileOutputStream(file)).setComments("Hi");
到
new writeFile(new FileOutputStream(file, true)).setComments("Hi");
我个人认为,最好使用一个OutputStream
(而你的writeFile
就是这样一个类)。您应始终close
您的资源(您可以使用try-with-resources
)。最后,Java命名约定的类以大写字母开头 - writeFile
看起来就像方法名一样。
try (writeFile fos = new writeFile(new FileOutputStream(file))) {
fos.setComments("hello");
fos.setComments("Hi");
}