您的位置:首页 > 编程语言 > Java开发

关于集合追加写入文件中,会重复前面的内容的解决

2017-12-21 12:19 387 查看
原因:

因为ObjectOutputStream 默认的方法为writeStreamHeader()方法,这个方法使得前面的数据也会写进去。

解决方法:

重写writeStreamHeader()方法,追加写入文件时加个判断语句,是否为第一次写入,然后在取舍是否该过滤信息。

代码如下:

重写writeStreamHeader()方法,使追加写入文件时。判断是否为第一次读取,然后再取舍是否过滤信息

class MyObjectOutputStream extends ObjectOutputStream{

private static File f;

public static MyObjectOutputStream newInstance(File file,OutputStream out) throws IOException {
f=file;
return new MyObjectOutputStream(out);
}

private MyObjectOutputStream(OutputStream out) throws IOException{
super(out);//调用重写的writeStreamHeader()
}

//重写方法
protected void writeStreamHeader() throws IOException {
if(!f.exists() || (f.exists() && f.length() == 0)){
super.writeStreamHeader();
}
else{
super.reset();
}
}


}

写入时的代码:

public void input(Object p,File f){
FileOutputStream fos=null;

try{
fos=new FileOutputStream(f,true);
MyObjectOutputStream oos=MyObjectOutputStream.newInstance(f,fos);
oos.writeObject(p);
fos.close();
oos.close();
}catch(FileNotFoundException ex){
ex.printStackTrace();
}catch(IOException ex2){
ex2.printStackTrace();
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  JAVA-文件
相关文章推荐