缓冲输出流

时间:2017-07-24 21:44:37

标签: java

我注意到输出流类(缓冲输出流)的行为,我想了解它来解决我的问题,当我创建一个对象来在文件中写入文本数据时,它是可以的但是当我再次尝试用同一个类的另一个对象,它工作正常,但用新的

替换以前的文本
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字,第一个字不存在,因为它被替换为最后一个,所以为什么当我使用另一个对象写一些文本时,它从开始写入并在之前替换并且有任何解决方案,因为当我关闭程序并再次打开它时,它将是对象的新声明,这被视为新对象

1 个答案:

答案 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");
}