- 浏览: 318139 次
- 性别:
- 来自: 深圳
-
文章分类
最新评论
-
every:
真JB坑爹,标题redhat6 结果用的时5.3 ,尼玛标 ...
RedHat Linux 6企业版开启VNC Server远程桌面 -
okooo00:
五年光景蹉跎,最终还是烂尾了,从此人生又少了一样追求
《凡人修仙传》点评 -
mikey_5:
原来是这样子判断数据格式的,Thanks
POI读取Excel浅谈 -
jveqi:
tracy_meimei 写道楼主,我试过N多次了,在我的my ...
MyEclipse6.5 下Axis2插件的下载和安装 -
jsx112:
...
MySQL select into和SQL select into
1.对象的序列化就是保存对象的当前状态。
2.保存对象的状态有两种主要的方式:
1) 对象序列化(将对象写入到文件,以后再反序列化,见后例)
如果保存的数据用于Java程序内交互,则采用对象的序列化;
2) 写入文件(将对象写入到文本文件,注意,是文本文件)
如果保存的数据用于和其他非Java程序交互,则保存到文本文件。
3.对象如果需要序列化,则它所在的类必须要实现Serializable接口。
如果某类是可序列化的,则它的子类自动地可以序列化。
4.对象序列化的步骤:
1) 创建文件输出流;
2) 创建对象输出流;
3) 写入对象状态;
4) 关闭对象输出流;
//1.创建文件输出流 FileOutputStream fs = new FileOutputStream("OutputFile.file"); //2.创建对象输出流 ObjectOutputStream os = new ObjectOutputStream(fs); //3.写入对象状态 os.writeObject(characterOne); os.writeObject(characterTwo); os.writeObject(characterThree); //4.关闭对象输出流 os.close();
对象写入文件的顺序为:
其中,ObjectOutputStream是把对象转换成字节流;FileOutputStream是把字节流写入文件。
5.序列化对象会把对象的所有属性保存,被对象的实例变量所引用的对象也会被序列化。
如果某实例变量不能或不应该被序列化,则把这个变量标记为transient。将属性标记为transient后,对象序列化时会将该属性保存为null值。
6.对象解序列化的步骤:
1) 创建文件输入流;
2) 创建对象输入流;
3) 读出对象状态;
4) 转换对象类型(因为对象读出后为Object类型);
5) 关闭对象输入流;
在对象读出到对象输入流后,JVM会尝试查找和加载对象的类,如果不成功则报异常。
7.对象被还原时,静态变量维持类中原本的样子,而不是存储时的样子。
8.将对象状态写入文件的步骤:(使用BufferedWriter)
//先用缓冲区存放数据,然后链接到文件 BufferedWriter writer = new BufferedWriter(new FileWriter(aFile)); //写入数据 writer.write("blabla"); //关闭 writer.close();
对象写入文件的顺序:
使用缓冲区Writer的原因:如果直接使用FileWriter的话,写硬盘需要好多次,速度较慢(硬盘读写速度远远慢于内存读写速度)。使用了缓冲区Writer就可以先缓冲数据,然后一次性得写到硬盘文件中。
9.将对象从文件读出的步骤:(使用BufferedReader)
使用缓冲区Writer的原因:如果直接使用FileWriter的话,写硬盘需要好多次,速度较慢(硬盘读写速度远远慢于内存读写速度)。使用了缓冲区Writer就可以先缓冲数据,然后一次性得写到硬盘文件中。
9.将对象从文件读出的步骤:(使用BufferedReader)
//FileReader是字符的连接到文本文件的串流 FileReader fileReader = new FileReader(new File("File.txt")); //使用BufferedReader链接到FileReader,使得接收更有效率 BufferedReader reader = new BufferedReader(fileReader); String line = null; //挨行打印出数据 while((line = reader.readLine())!= null) { System.out.println(line); }
文件读出的过程中,使用BufferedReader去链接FileReader,使得接收更有效率。
---------------------------------------
以下是一个对象序列化,反序列化以及文件IO的例子,以后可以翻阅
class CashCheck implements Serializable { private static final long serialVersionUID = -8872155900725314694L; private String cashCheckID; private int cashAmout; public CashCheck() { } public String getCashCheckID() { return cashCheckID; } public void setCashCheckID(String cashCheckID) { this.cashCheckID = cashCheckID; } public int getCashAmout() { return cashAmout; } public void setCashAmout(int cashAmout) { this.cashAmout = cashAmout; } } public class SerializeDemo01 { public static void main(String[] args) { CashCheck check = new CashCheck(); check.setCashAmout(10000); check.setCashCheckID("notifier"); /* * * 序列化对象 * */ try { // 1.创建文件输出流,负责将字节写入文件 FileOutputStream fs = new FileOutputStream( new File("C:\\Documents and Settings\\Administrator\\桌面\\notifier.file")); // 2.创建对象输出流,负责将对象转为字节 ObjectOutputStream os = new ObjectOutputStream(fs); // 3.写入对象 os.writeObject(check); // 4.关闭对象输出流 os.close(); } catch (FileNotFoundException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } /* * * 解序列化对象 * */ try { // 1.创建文件输入流,负责将文件转为字节 FileInputStream fi = new FileInputStream("C:\\Documents and Settings\\Administrator\\桌面\\notifier.file"); // 2.创建对象输入流,负责将字节写入对象 ObjectInputStream oi = new ObjectInputStream(fi); // 3.读出对象 Object o1 = oi.readObject(); if (o1 instanceof CashCheck) { CashCheck check1 = (CashCheck) o1; System.out.println(check1.getCashCheckID()); System.out.println(check1.getCashAmout()); } // 4.关闭对象输入流 oi.close(); } catch (FileNotFoundException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } catch (ClassNotFoundException e) { e.printStackTrace(); } /* * * 以文件的形式读出序列化文件,是乱码 * */ try { FileReader fr = new FileReader( new File("C:\\Documents and Settings\\Administrator\\桌面\\notifier.file")); BufferedReader br = new BufferedReader(fr); String line = null; while ((line = br.readLine()) != null) { System.out.println(line); } } catch (FileNotFoundException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } } }
发表评论
-
Mina开发笔记
2014-12-08 20:08 0import java.nio.charset.Ch ... -
Excel中日期与数字的转换代码
2014-05-30 23:24 2794public static void main(St ... -
求一个月有几周
2013-02-22 18:19 1213int year = 2013; int month= ... -
The error is weblogic.descriptor.DescriptorException: Unmarshaller failed
2012-09-13 11:58 2338部署 web project 到weblogic92(换成10 ... -
ecllipse无法启动,一直停留刚开始启动界面
2012-07-18 11:47 24341、 故障发生原因 :由于电脑配置较差 ,经常死机 或者 ... -
启动JBOSS,提示错误1098端口被占用的解决方案
2012-06-25 10:25 1811问题:启动JBOSS,提示错误1098端口被占用 方案一: ... -
Version 1.3.1_01 of the JVM is not suitable for this product.Version:1.4.1 or gr
2012-05-30 17:06 1172Version 1.3.1_01 of the JVM is ... -
java.lang.AbstractMethodError: com.microsoft.jdbc.base.BaseDatabaseMetaData.supp
2012-04-10 21:51 1993java.lang.AbstractMethodError: ... -
org.apache.axis2.databinding.utils.BeanUtil.getPullParser错误
2012-03-28 12:56 1961在开发ssh+axis2的webservice应用中,报这个错 ... -
增加eclipse启动的Tomcat内存的
2011-09-30 10:04 8937JAVA程序启动时JVM都会分配一个初始内存和最大内存给这 ... -
java.lang.OutOfMemoryError: PermGen space及其解决方法
2011-09-26 10:02 12711、 PermGen space的全称 ... -
POI读取Excel浅谈
2011-09-24 15:30 3022先看代码,挨句解释: 一般遍历使用两种方式,1:得到总的行数 ... -
POI读取EXCEL教程
2011-09-24 14:22 1874一、Excel基础 二、HSSF概况 三、通过user ... -
有关java中的Date,String,Timestamp之间的转化问题
2011-09-22 17:10 1469一.获取系统当前时间: 1.System.out.print ... -
Hibernate温习(4)--三大类查询总结
2011-09-14 12:49 1386[url]Hibernate目前总共分为三大类查询:creti ... -
hibernate 关系映射 annotation 版
2011-09-06 16:29 1564关于mappedBy 双向关联 ... -
hibernate+spring 注解 对事务的一些信息
2011-09-06 16:27 1641事务注解说明@Transactional 类事务说明机制 ... -
JPA一对多,多对多映射
2011-09-03 23:46 4077JPA(Java Persistence API)是Sun ... -
Rational Rose 生成java代码
2011-08-25 10:26 1975一,正向工程 1、设置默认语言为Java,Tools- ... -
SOA服务设计原则-转载
2011-08-24 10:27 1160这一部分是有关整个 SOA 系统的指南,代表了在建立系统时需要 ...
相关推荐
5. **IO流**:讲解输入输出流的基本概念,包括字节流和字符流,以及缓冲流、转换流、对象序列化等高级话题。 6. **多线程**:讨论并发编程的基础,线程的创建与同步,包括synchronized关键字、wait()、notify()和...
【Java IO操作详解】 在Java编程中,IO(Input/Output)操作是处理数据输入与输出的核心技术。Java-IO操作共19页的笔记详细介绍了这一关键领域,旨在帮助...这19页的学习笔记将是你掌握Java IO操作的重要参考资料。
"IO-黑马程序员Java学习笔记"这个压缩包包含了关于Java IO的详细教程,可以帮助我们深入理解这个关键领域。下面将根据提供的文件名来解析可能包含的知识点。 1. **IO.md**: 这个文件很可能是Markdown格式的学习...
4. **IO流**:介绍输入/输出流的概念,包括文件操作、字节流、字符流、对象序列化等。这部分内容涉及数据的读写和传输。 5. **网络编程**:讲解Socket编程,如何创建客户端和服务器进行网络通信,以及HTTP、HTTPS...
8. **反射**:反射机制允许程序在运行时动态获取类的信息并操作对象,是Java强大之处,常用于插件系统、序列化和动态代理。 9. **设计模式**:设计模式是解决常见问题的最佳实践,如单例模式、工厂模式、观察者模式...
### Java学习笔记之IO流 #### 一、IO流概述 在Java中,IO流是用于处理输入输出操作的一种机制,主要包括输入流(Input Stream)和输出流(Output Stream)两大类。通过这些流,我们可以实现对文件的操作,如读取、写入...
{7.12}对象序列化}{117}{section.7.12} {8}多线程}{121}{chapter.8} {8.1}线程的常用属性与方法}{121}{section.8.1} {8.2}后台线程}{123}{section.8.2} {8.3}创建线程的两种方法}{123}{section.8.3} {8.4}...
5. **IO流**:阐述了Java I/O流的分类、层次结构以及常用类的用法,包括字符流和字节流、输入流和输出流、缓冲流以及对象序列化。 6. **集合框架**:详述ArrayList、LinkedList、Vector、HashSet、HashMap等集合类...
在IO流方面,书中有详尽的介绍,包括文件操作、字节流、字符流、缓冲流和对象序列化。这些知识使开发者能够有效地处理输入输出,实现数据的读写和传输。 线程和并发处理也是书中的一大亮点。读者将学习到如何创建和...
【JAVA学习笔记】是一份专为Java初学者设计的学习资源,包含了从基础知识到进阶概念的全面讲解。PDF版的格式使得学习者可以方便地在各种设备上阅读和打印,随时随地提升自己的Java技能。 这份笔记可能涵盖了以下几...
笔记会讲解字节流和字符流的区别,以及如何使用缓冲区提高效率,还会涵盖文件流、网络流和对象序列化。 ### 6. 集合框架(8:Java Collections FrameWork-Java API 实战.md) Java集合框架是管理对象的容器,如...
本篇学习笔记主要聚焦于Java IO流的基本概念、分类、使用方法以及在实际开发中的应用。 一、Java IO流简介 Java IO流分为字符流和字节流两大类,它们都继承自抽象基类`java.io.InputStream`和`java.io.OutputStream...
【Java学习笔记】北大青鸟课程精华解析 Java是一种广泛使用的高级编程语言,以其平台无关性、面向对象的特性以及强大的安全性能而受到广大开发者喜爱。北大青鸟作为知名的IT培训机构,提供了丰富的Java教学资源,这...
- `writeObject(Object obj)`:序列化对象。 - `readObject()`:反序列化对象。 **4.8 RandomAccessFile** - **特点**:可以随机访问文件的任意位置。 - **构造方法**: - `RandomAccessFile(File file, String...
### Java学习笔记整理 #### 1. Java简介 ##### 1.1 计算机编程和开发语言 计算机系统由硬件系统和软件系统组成。软件系统又进一步细分为系统软件和应用软件。其中,系统软件包括操作系统、编译系统、数据库系统等...
- 文件流与对象序列化:如何将对象写入文件并反序列化恢复。 5. **Java的面向对象编程** - 继承、封装和多态:深入理解面向对象三大特性及其在Java中的体现。 - 抽象类与接口:探讨抽象类和接口的区别与应用场景...
Java的`java.io.Serializable`接口和`ObjectOutputStream/ObjectInputStream`可以用于对象的序列化和反序列化。 7. **安全性**:考虑到网络安全,开发者可能还会介绍如何在Java客户端服务器程序中添加加密和身份...
5. **IO流**:Java的IO系统基于流的概念,提供了多种输入输出流,支持字符和字节流,以及缓冲、转换和对象序列化等功能。 6. **集合框架**:包括List、Set和Map接口,以及它们的实现类如ArrayList、HashSet、...