黑马程序员——Java基础——IO流(三)—序列流、管道流、RandomAccessFile类、操作基本数据类型的流对象、操作数组和字符串、字符编码

第一讲  对象序列化(持久化)

一、概述:就是把对象封存在硬盘,可以保持数据;关键类:ObjectInputStream和ObjectOutpurStream

二、

关键字:ObjectOutputStream:方法有writerObject()读取
          ObjectInputStream     方法有readObject()
      被序列化的对象需要    implements Serializable关于被序列化的类需要实现Serializable它等于一个撮,标识用的,改变类里面的语句就变了。如果想固定一个撮,可以:
public static final long serialVersionUId=42L;//给他固定一个撮1、写入流对象  使用writerObject(Object obj)方法,将对象作为参数传入2、读取流对象  适应readObject(Object obj)方法,方法注:被static和transient修饰后不能被序列化保存
 1 /*一下主要为了演示如何对象序列化
 2  * 关键字:ObjectOutputStream:方法有writerObject()读取
 3  *         ObjectInputStream     方法有readObject()
 4  *     被序列化的对象需要    implements Serializable
 5  *
 6  */
 7 import java.io.*;
 8 public class ObjectStreamDemo {
 9     public static void main(String[] args) throws IOException,ClassNotFoundException{
10
11         Person p=new Person("水音",25,"kr");
12
13         File f=new File("D:\\sy.txt");
14
15         writeObj(p,f);
16         readObj(f);
17     }
18
19     private static void writeObj(Person p, File f) {
20         ObjectOutputStream oos=null;
21         try {
22             oos=new ObjectOutputStream(new FileOutputStream(f));
23             oos.writeObject(p);
24         } catch (IOException e) {
25             throw new RuntimeException("对象写入失败");
26         }
27         finally{
28             try {
29                 if(oos!=null)
30                     oos.close();
31             } catch (Exception e2) {
32                 throw new RuntimeException("关流失败");
33             }
34         }
35     }
36 //读取
37     private static void readObj(File f) {
38         ObjectInputStream ois=null;
39         try {
40             ois=new ObjectInputStream(new FileInputStream(f));
41             Person p=(Person)ois.readObject();
42             System.out.println(p);
43         } catch (Exception e) {
44             // TODO: handle exception
45         }
46         finally{
47             try {
48                 if(ois!=null)
49                     ois.close();
50             } catch (Exception e3) {
51                 throw new RuntimeException("关流失败");
52             }
53         }
54
55     }
56     //    视频读取
57     public static void readObj()throws IOException, ClassNotFoundException{
58         ObjectInputStream ois=
59                 new ObjectInputStream(new FileInputStream("D:\\sy.txt"));
60         Person p=(Person)ois.readObject();
61         System.out.println(p);
62         ois.close();
63     }
64
65 //    视频方法存储
66     public static void writeObj()throws IOException{
67
68         ObjectOutputStream oos=
69                 new ObjectOutputStream(new FileOutputStream("D:\\sy.txt"));
70         oos.writeObject(new Person("水音",24,"kr"));
71         oos.writeObject(new Person("水音",25));
72         oos.close();
73     }
74 }
75
76 //创建类
77 class Person implements Serializable{//必须实现这个才能被序列化
78     public static final long serialVersionUId=42L;//给他固定一个撮
79
80     private String name;
81     transient int age;//使用transient后就不能被序列化
82     static String country="cn";//静态也不能序列化
83     Person(String name,int age,String country){
84         this.name=name;
85         this.age=age;
86         this.country=country;
87     }
88     public String toString(){
89         return name+"="+age+"="+country;
90     }
91 }
时间: 2024-11-18 22:53:36

黑马程序员——Java基础——IO流(三)—序列流、管道流、RandomAccessFile类、操作基本数据类型的流对象、操作数组和字符串、字符编码的相关文章

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

-----------android培训.java培训.java学习型技术博客.期待与您交流!------------ 第三讲 总结(常见代码重要知识点) 一.字节输入流 示例1. package cn.itheima.FileInputStream; import java.io.FileInputStream; import java.io.IOException; /* * 字节输入流读取任意文件 * 创建FileInputStream 对象,传递字符串文件名 * 调用父类方法read读取

黑马程序员——java基础---IO(input output)流字符流

黑马程序员——java基础---IO(input output)流字符流 ------Java培训.Android培训.iOS培训..Net培训.期待与您交流! ------- io(input output)流特点: 1,io流用来处理数据之间的传输 2,java对数据的操作是通过流的方式: 3,java用于操作流的对象都在io包中: 4,流按操作数据分为两种:字节流和字符流: 5,流按流向分为:输入流和输出流. 注意:流只能操作数据,而不能操作文件. 3.IO流的常用基类: 1)字节流的抽象

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

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

黑马程序员——Java基础---io(上)

黑马程序员——Java基础---io(上) ------<a href="http://www.itheima.com" target="blank">Java培训.Android培训.iOS培训..Net培训</a>.期待与您交流! ------ 一.概述 Java I/O系统负责处理程序的输入和输出,I/O类库位于java.io包中,它对各种常见的输入流和输出流进行了抽象.如果数据流中最小的数据单元是字节,那么称这种流为字节流:如果数据流

黑马程序员——Java基础——IO流(三)—对象的序列化(持久化),管道流,操作基本数据类型的流对象

第一讲 对象序列化(持久化) 概述: 将堆内存中的对象存入硬盘,以包括对象的数据,称为持久化或序列化 使用的类:ObjectInputStream和ObjectOutputStream 特有方法: ObjectInputStream Object readObject():读取 ObjectOutputStream void writeObject(obj):写入 1 /* 2 * 需求:将一个对象序列化,并从硬盘中读取序列化的对象 3 * 4 */ 5 import java.io.*; 6

黑马程序员——Java基础--IO流(一)---字符流和字节流

------Java培训.Android培训.iOS培训..Net培训.期待与您交流! ------- 一.IO流的介绍及体系 IO流用来处理设备之间的数据传输.java对数据的操作是通过流的方式.java用于操作流的对象都在IO包中. 输入流和输出流相对于内存设备而言:将外设中的数据读取到内存中:输入.将内存中的数据写出到外设中:输出. 流按照操作数据分为两种:字节流和字符流. 字符流的由来:其实就是字节流读取文字字节数据后,不直接操作而是先查指定的编码表,获取对应的文字,再对这个文字进行操作

黑马程序员——Java基础---IO(三)--File类、Properties类、打印流、序列流(合并流)

------<a href="http://www.itheima.com" target="blank">Java培训.Android培训.iOS培训..Net培训</a>.期待与您交流! ------- File类 一.概述 1.File类:文件和目录路径名的抽象表现形式 2.特点: 1)用来将文件或文件夹封装成对象 2)方便于对文件与文件夹的属性信息进行操作,因此是对流操作的一种补充 3)File类的实例是不可变的:也就是说,一旦创建,

黑马程序员——Java基础---IO(二)---IO字节流、流操作规律

------<a href="http://www.itheima.com" target="blank">Java培训.Android培训.iOS培训..Net培训</a>.期待与您交流! -------   字节流 一.概述 1.字节流和字符流的基本操作是相同的,但字节流还可以操作其他媒体文件. 2.由于媒体文件数据中都是以字节存储的,所以,字节流对象可直接对媒体文件的数据写入到文件中,而可以不用再进行刷流动作. 3.读写字节流:Inpu

黑马程序员——Java基础--IO流(一)---File类以及其他流对象

------Java培训.Android培训.iOS培训..Net培训.期待与您交流! ------- 一.File类 File类是将文件系统中的文件和文件夹封装成了对象.提供了更多的属性和行为可以对这些文件和文件夹进行操作.这些是流对象办不到的,因为流只操作数据.File对象可以作为参数传递给流对象的构造函数.File 类的实例是不可变的:也就是说,一旦创建,File 对象表示的抽象路径名将永不改变. 1.File类中的方法 (1).File类的构造方法以及字段 1 new File(Stri

黑马程序员——java基础IO流——字符流缓冲区和字节流

字符流的缓冲区 l  缓冲区的出现提高了对数据的读写效率. l  对应类 ?    BufferedWriter ?    BufferedReader l  缓冲区要结合流才可以使用. l  在流的基础上对流的功能进行了增强. 1, BufferedWriter 每次可以写入一行,缓冲区的出现是为了提高流的操作效率而出现的.所以在创建缓冲区之前,必须要先有流对象.该缓冲区中提供了一个跨平台的换行符,newLine(); /* 缓冲区的出现是为了提高流的操作效率而出现的. 所以在创建缓冲区之前,