软件编程
位置:首页>> 软件编程>> java编程>> Java操作IO对象流进行数据的读写

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

作者:幻影寒狼  发布时间:2021-08-25 03:33:49 

标签:Java,IO流,数据读写

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

只有字节流没有字符流

  1. .类必须实现Serializable接口

  2. 给类加个序列化编号,给类定义一个标记,新的修改后的类还可以操作曾经序列化的对象

  3. 静态是不能被序列化的,序列化只能对堆中的进行序列化 ,不能对“方法区”中的进行序列化

  4. 不需要序列化的字段前加 transient

小例子:

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


package com.uwo9.test03;

import java.io.Serializable;

public class Dog implements Serializable {
private static final long serialVersionUID = 2809685095868158625L;
String name;
String color;
}

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


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 + "]";
}

}

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


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();
}
}

}

}

从指定文件中读取对象


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();
}
}

}

}

来源:https://blog.csdn.net/huanyinghanlang/article/details/78828347

0
投稿

猜你喜欢

手机版 软件编程 asp之家 www.aspxhome.com