`

对象的序列化和文件输入输出

阅读更多
   1.为什么要序列化?
   答:序列化的目的是:保存对象的状态;例如开发一款网游动作游戏,需要保存人物的经验值,武器,体力等;序列化的对象会保存实例变量的值;
  
    2.怎样实现序列化?
    答:要让类能够被序列化,需要implements Serializable接口
 
    当对象被序列化之后,该对象引用的实例变量也会被序列化。如果在该对象里创建其他类的对象,则其他类也必须是被序列化的。


    3.如果某实例变量不能或不应该被序列化,应该怎么办?
    答:可以将它标记为transient(瞬时)的,序列化程序会将该变量跳过,且当解序列化的时候该变量的值为null或者是默认值。

    序列化例子
 
import java.io.*;
public class Box implements Serializable{

  private int width;
  private int height;
  省略get,set方法
  public static void main(String []args){
   Box myBox=new Box();
   myBox.setWidth(30);
   myBox.setHeight(40);
   try{
     FileOutputStream fs=new FileOutputStream("foo.txt");
     ObjectOutputStream os=new ObjectOutputStream(fs);
     os.writeObject(myBox);
     os.close();
     }
    catch(Exception e){
       e.printStackTrace();
     }
}
}

    解序列化
    FileInputStream fis=new FileInputStream("foo.txt");
    ObjectInputStream ois=new ObjectInputStream(fis);
     Object one=ois.readObject();
    转换对象类型
    MyBox myBox=(MyBox)one;
    ois.close();

    将字符串写入文本文件
     FileWriter writer = new FileWriter("foo.txt");
    writer.write("hello world");
    writer.close();

   
     BufferedWriter bw=new BufferedWriter(new FileWriter("boo.txt"));
     用BufferedWriter可以暂存一些数据,等到满的时候再存入磁盘,减少对磁盘的操作次数

      读取文本文件
      FileReader reader=new FileReader("boo.txt");
     BufferedReader br=new BufferedReader(reader);
     while(br.readLine().haxNext()){
       System.out.println("正在读取!")
  }
     br.close();

   




0
1
分享到:
评论

相关推荐

    JAVA对象序列化保存为XML文件的工具类

    【JAVA对象序列化保存为XML文件的工具类】 在Java编程中,对象序列化是一种将对象的状态转换为字节流的过程,以便可以存储或在网络上传输。而在反序列化时,这个字节流又可以恢复为原来的对象。Java提供了一个方便...

    基于对象输入输出流和数据结构的图书管理系统

    《基于对象输入输出流和数据结构的图书管理系统》是一个使用JAVA编程语言开发的DOS版本图书管理系统。这个系统充分利用了JAVA中的对象输入输出流技术以及高效的数据结构,以实现对图书信息的有效管理和操作。 首先...

    流程控制 网络编程 对象序列化

    对象序列化、网络编程、线程和IO流是Java中极为重要的概念和技术点,它们分别解决了数据的持久化、网络传输、并发执行和输入输出的问题。掌握这些技术,不仅能够提升开发效率,还能构建出更稳定、高效的应用系统。

    XML序列化与反序列化 实战

    这个类可能包含了一些方法,如`Serialize`(将对象序列化为XML字符串或写入XML文件)和`Deserialize`(从XML字符串或文件反序列化回对象)。 接下来,`说明.txt`文件应该提供了关于如何使用这个项目的详细指南。它...

    java序列化和反序列化

    ### Java序列化与反序列化详解 #### 一、Java序列化概述 Java序列化(Serialization...综上所述,Java序列化提供了一种简单有效的方式来处理对象的持久化和传输需求,但开发者也需要考虑其可能带来的性能和安全问题。

    对象序列化TCP传输

    对象序列化是将一个对象的状态转换为可存储或可传输的形式的过程,这在分布式系统、网络通信和持久化存储中非常常见。TCP(Transmission Control Protocol)是一种面向连接的、可靠的、基于字节流的传输层通信协议。...

    io_输入输出流_序列化反序列化_04.zip

    文件io_04可能包含了一些示例代码或练习,用于演示如何使用Java的IO流进行文件操作,以及如何实现对象的序列化和反序列化。这可能包括创建和读取文件,使用不同类型的流进行数据传输,以及处理序列化过程中的异常和...

    实验3 输入输出流的实验.doc

    Java 输入输出流实验 本实验主要介绍了 Java 中的输入输出流,包括 ...本实验总结了 Java 中的输入输出流、对象的序列化和反序列化、文件流和对象的串行化等知识点,并提供了一个完整的实验过程和代码实现。

    C# 对象串行化输入输出 演示代码

    下面我们将深入探讨C#对象串行化输入输出的相关知识点,并结合提供的代码示例进行讲解。 一、什么是对象串行化? 对象串行化是将一个对象转换为字节序列的过程,以便可以将其存储到文件或数据库中,或者通过网络...

    Java文件输入输出汇总

    6. **对象序列化与反序列化** - **ObjectInputStream**和**ObjectOutputStream**:它们允许将Java对象写入到文件中,实现对象的持久化,以及从文件中读取对象。 7. **文件复制** - Java中常见的文件复制方法包括...

    输入输出流和文件操作

    - **对象字节流**:`ObjectInputStream`和`ObjectOutputStream`处理对象的序列化和反序列化。 - **管道字节流**:`PipedInputStream`和`PipedOutputStream`用于在不同线程间传递数据。 4. **字符输入/输出流**: ...

    什么是Java的序列化和反序列化?如何实现对象的序列化和反序列化?(java面试题附答案).txt

    // 将对象序列化到文件 serializeObject(person, "person.ser"); // 从文件中反序列化对象 Person deserializedPerson = deserializeObject("person.ser"); // 打印反序列化后的对象 System.out.println(...

    VC序列化-存储文件方法

    `CObject`提供了一个`Serialize`函数,它接受一个`CArchive`对象,`CArchive`是MFC封装的`IStream`和`OStream`,可以实现对象到文件的输入/输出。 3. **如何实现序列化**:首先,你需要在自定义类中声明`Serialize`...

    MFC序列化资料文档 序列化资料

    5. **CArchive类**:MFC提供的一个类,用于处理序列化过程中的数据输入输出。`CArchive`对象可以与文件或内存流关联,从而实现对象的序列化和反序列化。 6. **打开和关闭档案**:在序列化之前,你需要创建一个`...

    Android 序列化对象存储到sharepreference

    总结,Android序列化对象存储到SharedPreferences是一种实用技巧,它结合了Java序列化和Android的SharedPreferences机制,为开发者提供了在应用间保存简单对象的便捷方式。然而,由于SharedPreferences的局限性,...

    Serializable序列化

    例如,在服务器端创建的对象可以通过序列化传递到客户端,或者在程序关闭后,下次启动时可以从序列化的文件中恢复之前的状态。此外,序列化也是实现分布式计算、持久化存储和RMI(远程方法调用)的基础。 实现序列...

    Java序列化

    - Java序列化是Java平台提供的一种持久化机制,它允许将对象转换为字节序列,这样就可以保存在文件中或在网络上传输。 - 序列化不仅可以用来持久化数据,还可以用于进程间通信(IPC)和远程方法调用(RMI)。 2. ...

    对象和Xml序列化反序列化

    要对一个对象进行序列化,你需要创建一个`XmlSerializer`实例,然后调用其`Serialize`方法,传入要序列化的对象和输出流(例如文件或内存流)。反序列化时,使用`Deserialize`方法并提供包含XML数据的输入流。 以下...

Global site tag (gtag.js) - Google Analytics