java之IO整理(下)

一:对象的序列化

对象序列化就是把一个对象变为二进制数据流的一种方法。

一个类要想被序列化,就行必须实现java.io.Serializable接口。虽然这个接口中没有任何方法,就如同之前的cloneable接口一样。实现了这个接口之后,就表示这个类具有被序列化的能力。

/**
 * 实现具有序列化能力的类
 * */
public class SerializableDemo implements Serializable{
 public SerializableDemo(){

 }
 public SerializableDemo(String name, int age){
 this.name=name;
 this.age=age;
 }
 @Override
 public String toString(){
 return "姓名:"+name+" 年龄:"+age;
 }
 private String name;
 private int age;
}

  

/**
 * 实现具有序列化能力的类
 * */
public class Person implements Serializable{
 public Person(){

 }

 public Person(String name, int age){
 this.name = name;
 this.age = age;
 }

 @Override
 public String toString(){
 return "姓名:" + name + " 年龄:" + age;
 }

 private String name;
 private int age;
}
/**
 * 示范ObjectOutputStream
 * */
public class ObjectOutputStreamDemo{
 public static void main(String[] args) throws IOException{
 File file = new File("d:" + File.separator + "hello.txt");
 ObjectOutputStream oos = new ObjectOutputStream(new FileOutputStream(
 file));
 oos.writeObject(new Person("rollen", 20));
 oos.close();
 }
}

当我们查看产生的hello.txt的时候,看到的是乱码。因为是二进制文件。

虽然我们不能直接查看里面的内容,但是我们可以使用ObjectInputStream类查看:

  

/**
 * ObjectInputStream示范
 * */
public class ObjectInputStreamDemo{
 public static void main(String[] args) throws Exception{
 File file = new File("d:" + File.separator + "hello.txt");
 ObjectInputStream input = new ObjectInputStream(new FileInputStream(
 file));
 Object obj = input.readObject();
 input.close();
 System.out.println(obj);
 }
}

 结果: 姓名:rollen 年龄:20

到底序列化什么内容呢?

其实只有属性会被序列化。

时间: 2024-10-25 17:28:48

java之IO整理(下)的相关文章

java之IO整理(中)

一:打印流/*System.out.println()重定向输出*/ /*public static void main(String[] args) { System.out.println("MM");//直接输出到控制台 File file=new File("d:"+File.separator+"mm.txt"); try { System.setOut(new PrintStream(new FileOutputStream(file

java之IO整理(上)

/*//创建一个新文件 public static void main(String[] args) { File file=new File("D:\\hello.txt"); try { file.createNewFile(); } catch (IOException e) { e.printStackTrace(); } }*/ /*//File类的两个常量 public static void main(String[] args) { System.out.println

java IO整理-File

File类 File 类是jam-io 包下代表与平台无关的文件和目录,也就是说如果希望在程序中操作文件和目录都可以通过File 类来完成,值得指出的是不管是文件.还是目录都是使用File 来操作的, File 能新建.删除和重命名文件和目录, File 不能访问文件内容本身.如果需要访问文件内容本身,则需要使用输入/输出流. 通过File类可以很方便的操纵文件夹和文件,下面是我写的一个递归程序,能够按层次打印出文件夹的内容,并且通过文件过滤器只输出目录和.exe文件. package File

黑马程序员——Java基础---IO(下)

黑马程序员——Java基础---IO(下) ------<a href="http://www.itheima.com" target="blank">Java培训.Android培训.iOS培训..Net培训</a>.期待与您交流! ------ 一.概述 Java除了基本的字节流.字符流之外,还提供了File类.properties类.打印流.序列流等和输入输出相关的类,它们能够帮助我们更好的处理信息.下面将对它们进行简单的介绍. 一.正

JAVA之IO技术-获取指定目录下的文件夹和文件的File对象或是字符串名称。

package ioTest.io3; /* * 获取指定目录下的文件夹和文件的File对象或是字符串名称. * 也可以通过filter获取指定的文件夹或者指定类型的文件 * 这里面需要做一个总结,如何利用jdk的源码去理解不熟悉的方法的应用. */ import java.io.File; import java.io.FileFilter; import java.io.FilenameFilter; public class FileDemo2 { public static void m

java中的IO整理

写在前面:本文章基本覆盖了java IO的全部内容,java新IO没有涉及,因为我想和这个分开,以突出那个的重要性,新IO哪一篇文章还没有开始写,估计很快就能和大家见面.照旧,文章依旧以例子为主,因为讲解内容的java书很多了,我觉的学以致用才是真.代码是写出来的,不是看出来的. 最后欢迎大家提出意见和建议. [案例1]创建一个新文件 1 2 3 4 5 6 7 8 9 10 11 import java.io.*; class hello{     public static void mai

Java IO整理

写在前面:本文章基本覆盖了java IO的全部内容,java新IO没有涉及,因为我想和这个分开,以突出那个的重要性,新IO哪一篇文章还没有开始写,估计很快就能和大家见面.照旧,文章依旧以例子为主,因为讲解内容的java书很多了,我觉的学以致用才是真.代码是写出来的,不是看出来的. 最后欢迎大家提出意见和建议. [案例1]创建一个新文件 1 2 3 4 5 6 7 8 9 10 11 import java.io.*; class hello{     public static void mai

【转】 Java中的IO整理

写在前面:本文章基本覆盖了java IO的全部内容,java新IO没有涉及,因为我想和这个分开,以突出那个的重要性,新IO哪一篇文章还没有开始写,估计很快就能和大家见面.照旧,文章依旧以例子为主,因为讲解内容的java书很多了,我觉的学以致用才是真.代码是写出来的,不是看出来的. 最后欢迎大家提出意见和建议. [案例1]创建一个新文件 1 2 3 4 5 6 7 8 9 10 11 import java.io.*; class hello{     public static void mai

Java知识链整理

突然发现自己的博客里写了好多东西,特别零散,有时遇到一些东西就想整理写下来,但当下笔时,脑中闪过"是否曾经写过".年纪大了,时间久了可能就忘了自己都写过什么,还是需要不断翻看下.到底自己都写了哪些东西,真的不清楚了,今天有时间整理下链接,归归类,以后写的也都各归各家. Java集合: Java IO: Java多线程并发: Java内存管理: 设计模式: 算法: 源码分析: