gpt4 book ai didi

Java操作IO对象流进行数据的读写

转载 作者:qq735679552 更新时间:2022-09-29 22:32:09 32 4
gpt4 key购买 nike

CFSDN坚持开源创造价值,我们致力于搭建一个资源共享平台,让每一个IT人在这里找到属于你的精彩世界.

这篇CFSDN的博客文章Java操作IO对象流进行数据的读写由作者收集整理,如果你对这篇文章有兴趣,记得点赞哟.

对象的读写 使用ObjectInputStream和ObjectOutputStream读写对象(序列化与反序列化).

只有字节流没有字符流 。

  1. .类必须实现Serializable接口
  2. 给类加个序列化编号,给类定义一个标记,新的修改后的类还可以操作曾经序列化的对象
  3. 静态是不能被序列化的,序列化只能对堆中的进行序列化 ,不能对“方法区”中的进行序列化
  4. 不需要序列化的字段前加 transient

小例子:

先创建一个Dog对象并序列化

?
1
2
3
4
5
6
7
8
9
package com.uwo9.test03;
 
import java.io.Serializable;
 
public class Dog implements Serializable {
     private static final long serialVersionUID = 2809685095868158625L;
     String name;
     String color;
}

再创建一个Student对象并序列化:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
package com.uwo9.test03;
 
import java.io.Serializable;
 
public class Student implements Serializable {
     private static final long serialVersionUID = 9078616504949971001L;
     static public  String schoolName;
     private transient String name;
     private transient int age;
     private double score;
     private Dog dog;
     public Student() {
         super ();
     }
     public Student(String name, int age, double score, Dog dog) {
         super ();
         this .name = name;
         this .age = age;
         this .score = score;
         this .dog = dog;
     }
     public String getName() {
         return name;
     }
     public void setName(String name) {
         this .name = name;
     }
     public int getAge() {
         return age;
     }
     public void setAge( int age) {
         this .age = age;
     }
     public double getScore() {
         return score;
     }
     public void setScore( double score) {
         this .score = score;
     }
     @Override
     public String toString() {
         return "Student [name=" + name + ", age=" + age + ", score=" + score + "]" ;
     }
 
}

将数据写入对象流并存入文件 。

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
package com.uwo9.test03;
 
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.ObjectOutputStream;
import java.util.ArrayList;
import java.util.Collections;
 
public class Test01 {
 
     public static void main(String[] args) {
         Dog dog = new Dog();
         dog.name = "大黄" ;
         dog.color = "Yellow" ;
         Student student1 = new Student( "学生1" , 18 , 99 ,dog);
         Student student2 = new Student( "学生2" , 19 , 99 ,dog);
         Student student3 = new Student( "学生3" , 20 , 99 ,dog);
         Student.schoolName = "某某大学" ;
         File file = new File( "E:/Temp/Test1.txt" );
         ObjectOutputStream oos = null ;
         try {
             oos = new ObjectOutputStream( new FileOutputStream(file));
             //oos.writeObject(student);
             ArrayList<Student> arrayList = new ArrayList<>();
             Collections.addAll(arrayList, student1,student2,student3);
             oos.writeObject(arrayList);
         } catch (FileNotFoundException e) {
             e.printStackTrace();
         } catch (IOException e) {
             e.printStackTrace();
         } finally {
             try {
                 oos.close();
             } catch (IOException e) {
                 e.printStackTrace();
             }
         }
        
     }
 
}

从指定文件中读取对象 。

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
package com.uwo9.test03;
 
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.ObjectInputStream;
import java.util.ArrayList;
 
public class Test02 {
 
     public static void main(String[] args) {
         // 从指定的文件中读取对象
         File file = new File( "E:/Temp/Test1.txt" );
         ObjectInputStream ois= null ;
         try {
             ois = new ObjectInputStream( new FileInputStream(file));
             // 读取对象
             // Student stu = (Student)ois.readObject();
             // System.out.println("读取到的数据为:"+stu);
             @SuppressWarnings ( "unchecked" )
             ArrayList<Student> arrayList = (ArrayList<Student>) ois.readObject();
             for (Student student : arrayList) {
                 System.out.println(student);
             }
         } catch (FileNotFoundException e) {
             e.printStackTrace();
         } catch (IOException e) {
             e.printStackTrace();
         } catch (ClassNotFoundException e) {
             e.printStackTrace();
         } finally {
             try {
                 ois.close();
             } catch (IOException e) {
                 e.printStackTrace();
             }
         }
 
     }
 
}

到此这篇关于Java操作IO对象流进行数据的读写的文章就介绍到这了,更多相关Java IO流进行数据的读写内容请搜索我以前的文章或继续浏览下面的相关文章希望大家以后多多支持我! 。

原文链接:https://blog.csdn.net/huanyinghanlang/article/details/78828347 。

最后此篇关于Java操作IO对象流进行数据的读写的文章就讲到这里了,如果你想了解更多关于Java操作IO对象流进行数据的读写的内容请搜索CFSDN的文章或继续浏览相关文章,希望大家以后支持我的博客! 。

32 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com