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

 更新时间:2021年07月01日 10:35:00   作者:幻影寒狼  
这篇文章主要介绍了Java操作IO对象流进行数据的读写,本文通过例子逐步介绍了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();
			}
		}
 
	}
 
}

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

相关文章

  • springmvc前台向后台传值几种方式总结(从简单到复杂)

    springmvc前台向后台传值几种方式总结(从简单到复杂)

    今天小编就为大家分享一篇springmvc前台向后台传值几种方式总结(从简单到复杂),具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-08-08
  • spring boot如何使用POI读取Excel文件

    spring boot如何使用POI读取Excel文件

    本文主要介绍使用POI进行Excel文件的相关操作,涉及读取文件,获取sheet表格,对单元格内容进行读写操作,以及合并单元格的操作
    2021-08-08
  • 如何实现Java的ArrayList经典实体类

    如何实现Java的ArrayList经典实体类

    ArrayList是Java集合框架中一个经典的实现类。他比起常用的数组而言,明显的优点在于,可以随意的添加和删除元素而不需考虑数组的大小。下面跟着小编一起来看下吧
    2017-02-02
  • Java实现插入排序实例

    Java实现插入排序实例

    这篇文章主要介绍了Java实现插入排序,实例分析了Java的插入排序原理与实现技巧,非常具有实用价值,需要的朋友可以参考下
    2015-02-02
  • Java中的模板模式说明与实现

    Java中的模板模式说明与实现

    这篇文章主要介绍了Java中的模板模式说明与实现,模板方法模式,又叫模板模式,在一个抽象类公开定义了执行它的方法的模板,它的子类可以更需要重写方法实现,但可以成为典型类中定义的方式进行,需要的朋友可以参考下
    2023-10-10
  • Java字节流与基本数据类型的转换实例

    Java字节流与基本数据类型的转换实例

    本篇文章主要介绍了Java字节流与基本数据类型的转换实例,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-06-06
  • Java 从互联网上爬邮箱代码示例

    Java 从互联网上爬邮箱代码示例

    这篇文章介绍了Java 从互联网上爬邮箱的有关内容,主要是一个代码示例,小编觉得挺不错的,这里给大家分享下,需要的朋友可以了解。
    2017-10-10
  • Java根据表达式获取对象中的值及设置值的例子

    Java根据表达式获取对象中的值及设置值的例子

    这篇文章主要介绍了Java根据表达式获取对象中的值及设置值的例子,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧
    2025-03-03
  • JVM参数NativeMemoryTracking的使用

    JVM参数NativeMemoryTracking的使用

    本文主要介绍了JVM参数NativeMemoryTracking的使用,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2025-01-01
  • 23种设计模式(4) java生成器模式

    23种设计模式(4) java生成器模式

    这篇文章主要为大家详细介绍了23种设计模式之java生成器模式,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-11-11

最新评论