package com.io; import java.io.ByteArrayOutputStream; import java.io.Externalizable; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.IOException; import java.io.ObjectInput; import java.io.ObjectInputStream; import java.io.ObjectOutput; import java.io.ObjectOutputStream; import java.io.Serializable; public class ExternalizableDemo { public static void main(String args[]) { testObjectSeri(); testObjectInSeri(); } /** * 对象序列化测试 */ public static void testObjectSeri() { Person person = new Person("test中文", "12", "abc"); FileOutputStream fos = null; ObjectOutputStream oos = null; try { fos = new FileOutputStream("D:\\Temp\\person.dat"); oos = new ObjectOutputStream(fos); oos.writeObject(person); } catch (FileNotFoundException e) { System.out.println("找不到指定的文件!"); e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } finally { try { oos.flush(); oos.close(); } catch (IOException e) { e.printStackTrace(); } } } /** * 对象反序列化测试 */ public static void testObjectInSeri() { FileInputStream fis = null; ObjectInputStream ois = null; Person person = null; try { fis = new FileInputStream("D:\\Temp\\person.dat"); ois = new ObjectInputStream(fis); person = (Person) ois.readObject(); } catch (FileNotFoundException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } catch (ClassNotFoundException e) { e.printStackTrace(); } finally { try { ois.close(); } catch (IOException e) { e.printStackTrace(); } } System.out.println(person.toString()); } } /** * 测试序列化所用的类 */ class Person implements Serializable { /** * */ private static final long serialVersionUID = 1L; private String username; private String cardNumber; private transient String password; public Person(String username, String cardNumber, String password) { this.username = username; this.cardNumber = cardNumber; this.password = password; } public String getUsername() { return username; } public void setUsername(String username) { this.username = username; } public String getCardNumber() { return cardNumber; } public void setCardNumber(String cardNumber) { this.cardNumber = cardNumber; } public String getPassword() { return password; } public void setPassword(String password) { this.password = password; } public String toString() { StringBuffer sb = new StringBuffer(this.getClass().getName()); sb.append("["); sb.append("\n\t"); sb.append("username=" + this.username); sb.append("\n\t"); sb.append("cardNumber=" + this.cardNumber); sb.append("\n\t"); sb.append("password=" + this.password); sb.append("]"); return sb.toString(); } // class Person implements Externalizable { // /** // * // */ // private static final long serialVersionUID = 1L; // private String username; // private String cardNumber; // private String password; // // public Person(String username, String cardNumber, String password) { // this.username = username; // this.cardNumber = cardNumber; // this.password = password; // } // // public String getUsername() { // return username; // } // // public void setUsername(String username) { // this.username = username; // } // // public String getCardNumber() { // return cardNumber; // } // // public void setCardNumber(String cardNumber) { // this.cardNumber = cardNumber; // } // // public String getPassword() { // return password; // } // // public void setPassword(String password) { // this.password = password; // } // // public String toString() { // StringBuffer sb = new StringBuffer(this.getClass().getName()); // sb.append("["); // sb.append("\n\t"); // sb.append("username=" + this.username); // sb.append("\n\t"); // sb.append("cardNumber=" + this.cardNumber); // sb.append("\n\t"); // sb.append("password=" + this.password); // sb.append("]"); // return sb.toString(); // } // // @Override // public void writeExternal(ObjectOutput out) throws IOException { // // } // // @Override // public void readExternal(ObjectInput in) throws IOException, // ClassNotFoundException { // // } }
相关推荐
### Java.io.Serializable 序列化问题详解 #### 一、序列化的概念与作用 在 Java 编程语言中,序列化是一种将对象的状态(即成员变量的值)转换为可以存储或传输的形式的过程。通常,这种形式是字节流,但也可以是...
### Java JDK IO包类详解 #### 概述 Java平台提供的`io`包为开发者提供了访问文件系统、对象序列化等功能的基本输入输出能力。它主要包括字节流、字符流及对象流(字节流的包装类)。此外,还提供了一些基本的文件...
此外,还有更高级的序列化方式,即实现`java.io.Externalizable`接口。这种方式完全由程序员控制序列化过程,`writeExternal`和`readExternal`方法分别用于序列化和反序列化。这种方式提供了更大的灵活性,但需要...
当需要在Flex与Java之间传递自定义类型时,可以在Flex中实现`IExternalizable`接口,并确保对应的Java对象也实现了`java.io.Externalizable`接口,以保持一致的序列化逻辑。 - **Date与`java.util.Date`**: - `...
另外,还有`java.io.Externalizable`接口,它继承自`Serializable`,但提供了更细粒度的控制权,允许类自定义序列化和反序列化的行为。如果一个类实现了`Externalizable`,则需要手动实现`writeExternal...
4. flash.utils.IExternalizable -> java.io.Externalizable:IExternalizable接口用于自定义序列化和反序列化,对应Java的Externalizable接口。 5. Date -> java.util.Date:日期类型在两种语言中都存在,转换后...
此外,Java提供了`Externalizable`接口作为`Serializable`的替代,允许自定义序列化和反序列化的行为,但这需要程序员手动编写更多的代码。 另外,如果你的类中包含不希望序列化的字段,可以使用`transient`关键字...
Java 串行化主要通过实现`java.io.Serializable`接口来实现,同时也提供了`java.io.Externalizable`接口来提供更细粒度的控制。 **一、Serializable接口** `Serializable`是Java中的一个标记接口,没有包含任何方法...
在Java中,实现序列化的类可以使用java.io.Serializable或java.io.Externalizable接口。这些接口提供了实现序列化的方法。 知识点9: 序列化的应用场景 序列化机制可以应用于各种场景,例如对象的存储、网络传输、...
攻击者可以利用Java对象的readObject()方法(这是由java.io.Externalizable接口的readExternal()方法提供支持的),这个方法会在对象反序列化的时候被调用。 在文档内容的OCR扫描部分,似乎涉及到序列化对象的二...
JAVA_IO模块是Java标准库中的一个重要组成部分,主要负责处理输入/输出操作,即通常所说的I/O操作。这一模块包含了处理各种不同数据流的类和接口,涵盖了数据流的建立、序列化、以及文件系统处理等方面的功能。以下...
### Java标准类库(java基础类) #### 概述 Java标准类库是Java编程...总之,`java.io`包是Java开发者处理文件和I/O操作的重要工具箱,深入理解和熟练掌握其提供的API对于提高Java应用程序的性能和可靠性至关重要。
### JAVA IO操作总结——节点流和处理流 #### 一、概述 在Java中,输入/输出(Input/Output,简称IO)操作是一项非常重要的功能,它涉及到如何从不同的源读取数据以及如何向不同的目的地写入数据。Java IO体系主要...
- **Externalizable 接口**: 除了Serializable接口外,还有一个更高级的`java.io.Externalizable`接口。实现这个接口的类可以自定义序列化和反序列化的行为。 安全性与序列化: 序列化也可能带来安全风险,因为任何...
### Java IO性能优化 #### 4.1 基本IO操作 在Java开发中,`java.io`包是处理输入输出操作的核心组件。虽然它旨在简化开发人员的工作流程,但初学者常常会因为不了解其内部机制而做出降低IO性能的选择。通过深入...
import java.io.Externalizable; import java.io.IOException; import java.io.ObjectInput; import java.io.ObjectOutput; public class SpecialPerson implements Externalizable { private int age; private ...
【北大Java--IO】知识点详解 输入/输出处理在计算机编程中扮演着至关重要的角色,尤其是在Java编程语言中。Java的I/O(输入/输出)流系统为各种类型的输入源和输出目标提供了一种统一的处理方式,简化了程序设计。...