大家好:]只是想知道是否可以在不关闭流并重新开始的情况下从不同类中的文件进行读写?
我需要使用CCD_ 1和CCD_。我目前有两个类,我的第一个类应该将所有对象写入一个文件。取决于它是什么类型的对象。我将把对象发送到另一个类,在那里它将继续写作。
问题是,要么在流关闭之前只写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
,我将覆盖每个对象。这个问题有简单的解决办法吗?
您需要将附加到FileOutputStream
。
您应该将其创建修改为:
...
try{DataOutputStream input = //append
new DataOutputStream(new FileOutputStream(filnavn,true)))
...
您可以像传递任何其他对象一样,将DataOutputStream从一个类/方法传递到另一个。只要它还没有关闭,就可以从传递给它的任何类/方法继续向它写入。作为最佳实践,负责打开DataOutputStream的类应该负责关闭它。