ObjectOutputStream 对象追加的实现

<pre class="java" name="code">	/**
	 * 将单个对象写入文件
	 *
	 * @param ls
	 */
	public void writeObject(Sgin sgin) throws IOException {
		ObjectOutputStream oos = null;
		FileOutputStream fos = null;
		if (Environment.MEDIA_MOUNTED.equals(Environment.getExternalStorageState())) {

			try {
				File saveFile = new File(this.filename);
				oos = AppendObjectOutputStream.newInstance(saveFile);
				oos.writeObject(sgin);
				oos.flush();
			} catch (IOException e) {
				throw e;
			} finally {
				if (null != oos) {
					oos.close();
				}
				if(null !=fos){
					fos.close();
				}
			}
		} else {
			throw new RuntimeException("Please insert the SD card");
		}

	}

package com.ztesoft.mfp.common.file;

import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.ObjectOutputStream;
import java.io.OutputStream;

/**
 * 追加模式的对象流
 * 使用 newInstance 静态 方法
 * @author wanglei
 *
 */
public class AppendObjectOutputStream extends ObjectOutputStream {

	/**
	 * 追加模式的对象流
	 * @param	File
	 * @return	ObjectOutputStream
	 * @throws	IOException
	 */
	public static ObjectOutputStream newInstance(File file) throws IOException {
		long length = file.length();
		FileOutputStream fos = new FileOutputStream(file,true);
		ObjectOutputStream oos = null;
		if(length>0){
			oos = new AppendObjectOutputStream(fos);
		}else{
			oos = new ObjectOutputStream(fos);
		}
		return oos ;
	}

	private AppendObjectOutputStream(OutputStream out) throws IOException {
		super(out);
	}

	@Override
	protected void writeStreamHeader() throws IOException {
		super.reset();
	}
}

时间: 2024-10-09 12:47:55

ObjectOutputStream 对象追加的实现的相关文章

对象追加到数组里

描述:将一个点击事件得到的对象追加到数组里 做法:全局声明一个数组,,在对象的点击事件里将得到的对象追加到数组 change(a){ arr.push(a) console.log(arr) var dynamicTags1 = []; for(var i = 0; i < arr.length; i++) { var item = {}; item['id'] = arr[i].id; item['name'] = arr[i].name; dynamicTags1.push(item); t

C# 持续序列化对象追加到文件的方法

最近有个需求,将内存和帧数数据序列化到二进制文件.为了节省内存,采用了100个对象的数组,每次存满就序列化到文件,然后归零继续存,以追加的性式继续序列化到原有文件. 这样相当于多个数组对象存在了同一个序列化文件.反序列化的时候需要处理一下.思路是先反序列化出来一个,然后修改文件读取的Offset,继续反序列化下一个,直到文件末尾. 1 namespace ProfilterDataNS 2 { 3 [Serializable] 4 public class ProfilterData 5 { 6

vue.js数组追加合并与对象追加合并

因为一直用到所以附上了 官方连接:https://cn.vuejs.org/v2/guide/reactivity.html 原文地址:https://www.cnblogs.com/yj-ang3141/p/10955237.html

对象流: ObjectInputStream 和 ObjectOutputStream

/* * 1.对象流: ObjectInputStream 和 ObjectOutputStream 一对. * 1) ObjectInputStream 对象的字节输入流类, ObjectOutputStream对象的字节输出流类. * 2) 功能: 实现对象的输入/输出. (存储到文件中的是对象,从相应的文件中读取的还是对象) * 3) 注意: 对象流属于处理流,因此,使用时必须将它套接在节点流上. * * 4) 要实现对象的存盘和读取必须具备什么条件? * a) 对象对应的类必须实现一个接

程序使用ObjectOutputStream(new FileOutputStream(fileName,true))向文件尾写入多个对象,多次运行,最后进行读取的时候抛出StreamCorruptedException

jdk1.8源码 public ObjectOutputStream(OutputStream out) throws IOException { verifySubclass(); bout = new BlockDataOutputStream(out); handles = new HandleTable(10, (float) 3.00); subs = new ReplaceTable(10, (float) 3.00); enableOverride = false; writeSt

Thinking in java 琐碎知识点之 I/O流 、对象序列化

Java I/O流 .对象序列化 1.File类 此类的实例可能表示(也可能不表示)实际文件系统对象,如文件或目录. File类可以新建.删除和重命名文件和目录,但是File不能访问文件本身的内容,这要使用IO流. File对象的createNewFile()方法在磁盘上创建真实的文件 例程:FileTest.java import java.io.*; public class FileTest { public static void main(String[] args) throws I

java学习--基础知识进阶第十天--标准输入流 &amp; 转换流 &amp; 打印流、对象操作流 、Properties集合

今日内容介绍 u  标准输入流 & 转换流 & 打印流 u  对象操作流 u  Properties集合 第1章 标准输入流 & 转换流 & 打印流 1.1 标准输入输出流 public static final InputStream in:标准输入流 public static final PrintStream out:标准输出流 package com.itheima_05; /* * 标准输入输出流: public static final InputStream

IO_ObjectInputStream&amp;ObjectOutputStream

数据输入流允许应用程序以与机器无关方式从底层输入流中读取基本 Java 数据类型.应用程序可以使用数据输出流写入稍后由数据输入流读取的数据. 对象被写到文件上,对象所属的类必须实现Serializable接口.该接口没有任何方法,只是一个标识接口而已. 对象的反序列化创建对象并不会调用到构造方法. serialVersionUID 是用于记录class文件的版本信息的,serialVersionUID这个数字是通过一个类的类名.成员.包名.工程名算出的一个数字. 使用ObjectInputStr

序列化之Java默认序列化技术(ObjectOutputStream与ObjectInputStream)

Java默认序列化技术 主要是通过 对象输出流java.io.ObjectOutputStream 对象输入流java.io.ObjectInputStream 来实现的 package com.xingej.ser; public interface ISerializer { // 序列化,将obj序列化成字节数组 public <T> byte[] serialize(T obj); // 反序列化,将字节数组,反序列化为T public <T> T deserialize(