嘿大家:]只是想知道是否可以从不同类的文件中读取和写入而不必关闭流并重新开始?
我需要使用DataOutputStream
和DataInputStream
。我目前有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
,我将覆盖每个对象。我有这个问题的简单解决方案吗?
答案 0 :(得分:2)
您需要追加到FileOutputStream
。
您应该按照以下方式修改其创建:
...
try{DataOutputStream input = //append
new DataOutputStream(new FileOutputStream(filnavn,true)))
...
答案 1 :(得分:0)
您可以将DataOutputStream从一个类/方法传递到另一个类/方法,就像传递任何其他对象一样。您可以从传递它的任何类/方法继续写入它,只要它尚未关闭。作为最佳实践,负责打开DataOutputStream的类应负责关闭它。