Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/37.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 缓冲输出流_Java - Fatal编程技术网

Java 缓冲输出流

Java 缓冲输出流,java,Java,我注意到输出流类缓冲输出流的一个行为,我想了解它以解决我的问题,即当我创建一个对象在文件中写入文本数据时,它是正常的,但当尝试使用同一类的另一个对象再次写入时,它工作正常,但用新文本替换以前的文本 class writeFile extneds BufferedOutputStream{ public static void main(String arg[]) throws FileNotFoundException, IOException { new writeFile(ne

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

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字,第一个字不在那里,因为它被最后一个字替换了。那么,为什么当我使用另一个对象来写一些文本时,它会从头开始写,然后替换为前面的文本呢?有什么解决方案吗?因为当我关闭程序并再次打开它时,它将是对象的新声明,这被认为是新的对象有一个构造函数,其中第二个参数是要追加的。我看到的最简单的解决办法是改变

new writeFile(new FileOutputStream(file)).setComments("Hi");

我个人认为,最好使用一个OutputStream,您的writeFile就是这样一个类。你应该关闭你的资源,你可以使用一个。最后,Java命名约定让类以大写字母开头——writeFile看起来像方法名

try (writeFile fos = new writeFile(new FileOutputStream(file))) {
    fos.setComments("hello");
    fos.setComments("Hi");
}

什么是挫折?为什么要执行BufferedOutputStream?新建文件OutputStreamFile将打开文件进行写入并截断内容。为什么这会让你感到惊讶呢?setBytes是一个将字符串作为参数并将其转换为字节数组的方法,我对它进行了扩展,使用了类中的受保护缓冲区,并在写入之前使用了一些缓冲功能。另外,别忘了正确关闭文件流。非常感谢你,请关闭文件。
try (writeFile fos = new writeFile(new FileOutputStream(file))) {
    fos.setComments("hello");
    fos.setComments("Hi");
}