从不同类中的文件读取和写入,而无需在java中关闭流

时间:2013-02-15 15:33:53

标签: java file stream dataoutputstream

嘿大家:]只是想知道是否可以从不同类的文件中读取和写入而不必关闭流并重新开始?

我需要使用DataOutputStreamDataInputStream。我目前有2个类,我的第一个类应该将所有对象写入文件。取决于它是什么类型的对象。我将把对象发送到另一个类,它将继续写。

问题是我要么只是在流关闭之前编写1个对象而我无法继续写下一个对象,或者每个对象都会覆盖最后一个对象。

    public int skrivTilFil( String filnavn)
  {
      try{DataOutputStream input = new DataOutputStream(new FileOutputStream(filnavn)))
      {
          Bok løper = første;
          {
              while(løper != null)
              {
                  if(løper instanceof Skolebok)
                  {
                      Skolebok bok = (Skolebok) løper;
                      bok.skrivObjektTilFil(input);
                  }

                  løper = løper.neste;
              }
          }
      }
  }




public void skrivObjektTilFil(DataOutputStream output) // skolebok class
         {
             try
             { 
                            output.writeUTF("Skolefag");
                output.writeInt(klassetrinn);
                output.writeUTF(skolefag);
                super.skrivObjektTilFil(output);
             }catch(IOException e)
             {               
                            System.out.println("General I/O exception: "
                            e.getMessage());e.printStackTrace(); 
                        }
         }

这里我将获得IOException因为流已关闭,所以我无法继续下一个对象,但如果我在第二个类中设置DataOutputStream,我将覆盖每个对象。我有这个问题的简单解决方案吗?

2 个答案:

答案 0 :(得分:2)

您需要追加FileOutputStream

您应该按照以下方式修改其创建:

...                                                                           
try{DataOutputStream input =                                  //append
            new DataOutputStream(new FileOutputStream(filnavn,true)))
...

答案 1 :(得分:0)

您可以将DataOutputStream从一个类/方法传递到另一个类/方法,就像传递任何其他对象一样。您可以从传递它的任何类/方法继续写入它,只要它尚未关闭。作为最佳实践,负责打开DataOutputStream的类应负责关闭它。