思路:把已经序列化的对象存入容器(如LinkedList<?>)中,然后用ObjectInputStream和ObjectOutputStream对这个实例化的LinkedList<?>对象进行读写。

  1 /**
2 * @Title: FileRW.java
3 * @Package com.file
4 * @Description: 文件、文件夹的创建、写入练习。读写是使用对象流实现。
5 * @author 慢跑学Android
6 * @date 2011-11-19 下午03:53:01
7 * @version V1.0
8 */
9 package com.file;
10
11 import java.io.File;
12 import java.io.FileInputStream;
13 import java.io.FileNotFoundException;
14 import java.io.FileOutputStream;
15 import java.io.IOException;
16 import java.io.ObjectInputStream;
17 import java.io.ObjectOutputStream;
18 import java.util.LinkedList;
19
20
21 public class FileRW {
22 private String dirPath;
23 private String filename;
24
25 public static void main(String[] args) {
26 String path = "C:\\晓声";
27 String fileName = "test.txt";
28 FileRW fileRW = new FileRW(path, fileName);
29 LinkedList<TestMessage> msgOut = new LinkedList<TestMessage>();
30 LinkedList<TestMessage> msgIn = null;
31
32 msgOut.add(new TestMessage("柯南", "偶像"));
33 msgOut.add(new TestMessage("卡卡西", "好样的"));
34 msgOut.add(new TestMessage("Android", "Android"));
35 msgOut.add(new TestMessage("哈哈", "测试下喔"));
36 fileRW.writeObject(path, fileName, msgOut);
37
38 msgIn = fileRW.readObject(path,fileName);
39
40 for(TestMessage temp:msgIn) {
41 System.out.println(temp.getName() + temp.getData());
42 }
43
44 }
45
46 public FileRW(String dirPath, String filename) {
47 this.dirPath = dirPath;
48 this.filename = filename;
49 if (creatDir()) {
50 creatFile();
51 }
52 }
53
54
55 private boolean creatDir() {
56 if (null != dirPath) {
57 File path = new File(dirPath);
58 if (path.exists()) {
59 return true;
60 }
61 if (true == path.mkdirs() ) {
62 return true;
63 }
64 }
65 return false;
66 }
67
68 private void creatFile() {
69 if (null != filename) {
70 File file = new File(dirPath, filename);
71 if (false == file.exists()) {
72 try {
73 file.createNewFile();
74 } catch (IOException e) {
75 e.printStackTrace();
76 }
77 }
78 }
79 }
80
81
82 /**
83 * @Title: writeObject
84 * @Description: Write a object to a file.
85 * @param path the directory of the target file
86 * @param filename the name of the target file
87 * @param msg the type of the object
88 * @return void
89 * @throws
90 */
91 private void writeObject(String path, String filename, LinkedList<TestMessage> msg) {
92 File file = new File(path, filename);
93 if (false == file.isFile()) {
94 return ;
95 }
96
97 try {
98 // The value "false" for FileOutputStream means that overwrite this file,
99 // if it is "true",append the new data to this file.
100 ObjectOutputStream oos = new ObjectOutputStream(new FileOutputStream(file,false));
101 oos.writeObject(msg);
102 oos.flush();
103 oos.close();
104 } catch (FileNotFoundException e) {
105 e.printStackTrace();
106 } catch (IOException e) {
107 e.printStackTrace();
108 }
109 }
110
111 /**
112 * @Title: readObject
113 * @Description: Read a object from a file.
114 * @param path the directory of the target file
115 * @param filename the name of the target file
116 * @return LinkedList<TestMessage>
117 * @throws
118 */
119 @SuppressWarnings("unchecked")
120 private LinkedList<TestMessage> readObject(String path, String filename) {
121 File file = new File(path, filename);
122 ObjectInputStream ois = null;
123 LinkedList<TestMessage> msgAll = null;
124
125 try {
126 ois = new ObjectInputStream(new FileInputStream(file));
127 try {
128 msgAll = (LinkedList<TestMessage>)ois.readObject();
129
130 } catch (ClassNotFoundException e) {
131 e.printStackTrace();
132 }
133 } catch (FileNotFoundException e) {
134 e.printStackTrace();
135 } catch (IOException e) {
136 e.printStackTrace();
137 } finally {
138 try {
139 ois.close();
140 } catch (IOException e) {
141 e.printStackTrace();
142 }
143 }
144
145 return msgAll;
146 }
147 }
 1 /**
2 * @Title: TestMessage.java
3 * @Package com.file
4 * @Description: FileRW的消息流
5 * @author 慢跑学Android
6 * @date 2011-11-19 下午04:35:11
7 * @version V1.0
8 */
9 package com.file;
10
11
12 public class TestMessage implements java.io.Serializable {
13 private String name;
14 private String data;
15
16 public String getName() {
17 return name;
18 }
19 public void setName(String name) {
20 this.name = name;
21 }
22 public String getData() {
23 return data;
24 }
25 public void setData(String data) {
26 this.data = data;
27 }
28 public TestMessage(String name, String msg) {
29 this.name = name;
30 data = msg;
31 }
32 }

Java 如何对文件进行多个Object对象流的读写操作的更多相关文章

  1. JavaScript:对Object对象的一些常用操作总结

    JavaScript对Object对象的一些常用操作总结. 一.Object.assign() 1.可以用作对象的复制 var obj = { a: 1 }; var copy = Object.as ...

  2. java实现xml文件读取并保存到对象

    首先浅聊一下解析xml的四种方式: 1.DOM方式:有缺点但是这个缺点却也是他的优点.下面详细介绍: 以树形的层次结构组织节点或信息片断集合,可以获得同一个文档中的多处不同数据.使用起来简单. 优点是 ...

  3. js中对Object对象的一些常用操作总结

    前言我前面的文章,写过js中“类”与继承的一些文章.ES5我们可以通过 构造函数 或者 Object.create()等方式来模拟出js中的“类”,当然,对象呢是类的实例化,我们可以通过如下方式创建对 ...

  4. java对象流(二)

    对象流,可以将java中的对象转为字节进行输出.将对象写入文件时.文件输出流是将字节写入到文件中. 对象流是将给定的对象转化为一组字节.writeObject()方法就是将对象转为字节. 对象流,读的 ...

  5. java处理Excel文件---excel文件的创建,删除,写入,读取

    这篇文章的代码是我封装的excel处理类,包含推断excel是否存在,表格索引是否存在,创建excel文件,删除excel文件,往excel中写入信息,从excel中读取数据. 尤其在写入与读取两个方 ...

  6. java文件的读写操作

    java文件的读写操作主要是对输入流和输出流的操作,由于流的分类很多,所以概念很容易模糊,基于此,对于流的读写操作做一个小结. 1.根据数据的流向来分: 输出流:是用来写数据的,是由程序(内存)--- ...

  7. Java 的字节流文件读取(一)

    上篇文章我们介绍了抽象化磁盘文件的 File 类型,它仅仅用于抽象化描述一个磁盘文件或目录,却不具备访问和修改一个文件内容的能力. Java 的 IO 流就是用于读写文件内容的一种设计,它能完成将磁盘 ...

  8. 对象流,它们是一对高级流,负责即将java对象与字节之间在读写的过程中进行转换。 * java.io.ObjectOutputStream * java.io.ObjectInputStream

    package seday06; import java.io.Serializable;import java.util.Arrays; /** * @author xingsir * 使用当前类来 ...

  9. C# 运用StreamReader类和StreamWriter类实现文件的读写操作

    对文件的读写操作应该是最重要的文件操作,System.IO命名空间为我们提供了诸多文件读写操作类,在这里我要向大家介绍最常用也是最基本的StreamReader类和StreamWriter类.从这两个 ...

随机推荐

  1. 实现线程按顺序输出ABC

    线程按顺序输出ABC 实现描述:建立三个线程A.B.C,分别按照顺序输出十次ABC 首先建立一个方法,按照条件进行输出 class PrintABC{ private int index=0; pub ...

  2. 实践node.js构建vue项目

    一.首先安装下载node.js 1.Node.js 官方网站下载:https://nodejs.org/en/,自行选择合适自己的下载安装即可 2.验证安装 打开cmd,输入node  –v和 npm ...

  3. WebXml文件与SpringMVC的联系

    WebXml文件与SpringMVC的联系 无论采用何种框架来进行Java Web的开发,只要是Web项目必须在WEB-INF下有web.xml,这是java规范. 当然,我们最早接触到Java We ...

  4. 二进制对比工具HexCmp的使用

    一.前提 遇到一个问题,文件通过后台上传成功后,客户端下载解压后,再次加载文件报错,报错信息该模块应包含一个程序集清单. (异常来自 HRESULT:0x80131018).但该错误文件与原文件大小一 ...

  5. poj1248 (线性筛欧拉函数)(原根)

    强烈鸣谢wddwjlss 题目大意:给出一个奇素数,求出他的原根的个数,多组数据. 这里先介绍一些基本性质 阶 设\((a,m)=1\),满足\(a^r \equiv 1 \pmod m\)的最小正整 ...

  6. [源码解析]PyTorch如何实现前向传播(1) --- 基础类(上)

    [源码解析]PyTorch如何实现前向传播(1) --- 基础类(上) 目录 [源码解析]PyTorch如何实现前向传播(1) --- 基础类(上) 0x00 摘要 0x01 总体逻辑 0x02 废弃 ...

  7. javascript-jquery插件

    1.jquery创建插件 jQuery.extend({插件名:函数体,插件名:函数体}): html部分 <div id="div1">开始动画</div> ...

  8. programmercarl——数组——二分查找

    二分查找,在经过: 34--https://leetcode-cn.com/problems/find-first-and-last-position-of-element-in-sorted-arr ...

  9. 深入浅出Java内存模型

    面试官:我记得上一次已经问过了为什么要有Java内存模型 面试官:我记得你的最终答案是:Java为了屏蔽硬件和操作系统访问内存的各种差异,提出了「Java内存模型」的规范,保证了Java程序在各种平台 ...

  10. 梦开始的地方(Noip模拟3) 2021.5.24

    T1 景区路线规划(期望dp/记忆化搜索) 一看题目发现肯定是概率期望题,再仔细想想这三天做的题,就知道是个期望dp. 考试思路(错): 因为聪聪与可可的10分打法根深蒂固,导致在考试时想到了用深搜( ...