0

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

我需要使用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在第二类中设置,我将覆盖每个对象。这个问题有简单的解决方案吗?

4

2 回答 2

2

您需要附加FileOutputStream.

您应该修改它的创建,如下所示:

...                                                                           
try{DataOutputStream input =                                  //append
            new DataOutputStream(new FileOutputStream(filnavn,true)))
...
于 2013-02-15T16:06:13.363 回答
0

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

于 2013-02-15T16:47:19.950 回答