首页 > 编程语言 >零基础学Java第二十一天之IIO流之对象流

零基础学Java第二十一天之IIO流之对象流

时间:2024-05-23 23:29:01浏览次数:22  
标签:Java String java 流之 io import IIO ois public

IO流之对象流

1、对象流

1、理解

将对象写入到文件,将文件里的对象读取到程序中

class ObjectInputStream – 对象输入流

class ObjectOutputStream – 对象输出流

序列化/钝化:程序里的对象 写入到 文件中

反序列化/活化:文件中的对象 读取到 程序中

2、注意

  1. 对象所属的类必须实现序列化接口 - Serializable
  2. Serializable接口没有任何抽象方法
  3. 没有任何抽象方法的接口叫做标记型接口
  4. Serializable的实现类必须添加序列化ID - serialVersionUID
  5. transient修饰的成员属性,该属性不会随着对象写入到文件中
  6. 静态属性不会随着对象写入到文件中,因为静态属性不属于对象

3、使用

1、利用 对象输出流 向文件写入数据
package com.xx.IO04;

import java.io.FileOutputStream;
import java.io.IOException;
import java.io.ObjectOutputStream;
import java.util.Date;

public class Test01 {
	public static void main(String[] args) throws IOException {
		//1.创建流对象
		ObjectOutputStream ois = new ObjectOutputStream(new FileOutputStream("xx.txt"));
		//2.写入数据
		ois.write(100);//写入int类型的数据
		ois.writeDouble(123.123);//写入double类型的数据
		ois.writeUTF("yxased");//写入UTF-8编码格式的字符串类型的数据
		ois.writeObject(new Date());//写入对象类型的数据
		//3.关闭资源
		ois.close();
	}
}
2、利用 对象输入流 读取文件里的数据
package com.xx.IO04;

import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.ObjectInputStream;
import java.util.Date;


public class Test02 {
	/**
	 * 知识点:利用 对象输入流 读取文件里的数据
	 * @throws ClassNotFoundException 
	 */
	public static void main(String[] args) throws FileNotFoundException, IOException, ClassNotFoundException {
		//1.创建对象流对象
		ObjectInputStream ois = new ObjectInputStream(new FileInputStream("xx.txt"));
	
		//2.读取数据
		int read = ois.read();
		System.out.println(read);
		double d = ois.readDouble();
		String utf = ois.readUTF();
		Date Date = (Date)ois.readObject();
		System.out.println(d);
		System.out.println(utf);
		System.out.println(Date);
        //关闭资源
		ois.close();
	}
}

3、自定义对象
package com.xx.io04;

import java.io.Serializable;

public class User implements Serializable{

	private static final long serialVersionUID = 8798250558176997713L;
	
	private String username;
	private transient String password;
	private String nickName;
	private String role;
	private double hp;
	private double mp;
	
	public User() {
	}

	public User(String username, String password, String nickName, String role, double hp, double mp) {
		this.username = username;
		this.password = password;
		this.nickName = nickName;
		this.role = role;
		this.hp = hp;
		this.mp = mp;
	}

	public String getUsername() {
		return username;
	}

	public void setUsername(String username) {
		this.username = username;
	}

	public String getPassword() {
		return password;
	}

	public void setPassword(String password) {
		this.password = password;
	}

	public String getNickName() {
		return nickName;
	}

	public void setNickName(String nickName) {
		this.nickName = nickName;
	}

	public String getRole() {
		return role;
	}

	public void setRole(String role) {
		this.role = role;
	}

	public double getHp() {
		return hp;
	}

	public void setHp(double hp) {
		this.hp = hp;
	}

	public double getMp() {
		return mp;
	}

	public void setMp(double mp) {
		this.mp = mp;
	}

	@Override
	public String toString() {
		return "User [username=" + username + ", password=" + password + ", nickName=" + nickName + ", role=" + role
				+ ", hp=" + hp + ", mp=" + mp + "]";
	}
}

4、利用 对象输出流 向文件写入自定义对象
package com.xx.IO04;

import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.ObjectOutputStream;

public class Test03 {
	public static void main(String[] args) throws FileNotFoundException, IOException {
		
		//创建溜对象
		ObjectOutputStream oos = new ObjectOutputStream(new FileOutputStream("xx.txt"));
		//写入数据
		oos.writeObject(new User("1123423479", "123123", "撕裂的忧伤", "艾瑞莉娅", 1200, 800));
		oos.writeObject(new User("2323543430", "321321", "沙漠野猪", "DJ", 1000, 1000));
		oos.writeObject(new User("1234532143", "123456", "玛卡巴卡", "元歌", 800, 1200));
		
		//关闭资源
		oos.close();
	}
}

5、利用 对象输入流 读取文件里的自定义对象
package com.xx.IO04;

import java.io.EOFException;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.ObjectInputStream;

public class Test04 {
	public static void main(String[] args) throws FileNotFoundException, IOException {
		//1.创建流对象
		ObjectInputStream ois = new ObjectInputStream(new FileInputStream("xx.txt"));
	
		//2.读取数据
		User user;
		try {
			while((user=(User)ois.readObject()) != null){
				System.out.println(user);
			}
		} catch (EOFException e) {
			
		} catch (ClassNotFoundException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}
}

标签:Java,String,java,流之,io,import,IIO,ois,public
From: https://blog.csdn.net/qq_53720725/article/details/139159859

相关文章

  • Java 异常相关(二):异常处理机制的补充,自定义异常的使用等
    一、前言记录时间[2024-05-22]前置文章:Java异常相关:异常体系结构,异常与错误的区别等本文讲述Java异常相关知识,对异常处理机制进行补充,以及自定义异常的方式。文章对异常知识的描述显然是笼统而简洁的,对于异常的学习,更应注重平时的积累和整理。二、异常处理机......
  • Java enum 枚举类
    JavaEnum枚举类概述枚举类型本质上也是一种类,只不过是这个类的对象是有限的、固定的几个,不能让用户随意创建。如果针对于某个类,其实例是确定个数,则推荐将此类声明为枚举类。如果枚举类的实例只有一个,则可以看作时单例的实现方式。枚举类的实现JDK5.0之前classS......
  • Java中负载均衡
    文章目录负载均衡背景如何实现负载均衡呢常见的负载均衡有三种负载均衡的作用范围负载均衡的的常用算法负载均衡背景在互联网的发展早期由于用户量较少业务需求比较简单对于软件应用来说我们只需要一台高配的服务器既可以完成整个业务的支撑这样的软件架构成为......
  • Java中继承与接口的区别(浅谈)
    在Java中,继承和接口是两种不同的方式来实现代码的复用和扩展。以下是它们之间的主要区别:1.继承:继承是面向对象编程中的一种方式,允许一个类继承另一个类的属性和方法。继承的主要目的是为了实现代码的复用,即子类可以继承父类的属性和方法,从而避免重复编写相同的代码。此外,继......
  • Java练习(并发模式)
    设计一个简单的生产者-消费者模型,其中生产者负责生成数据,消费者负责处理数据。为了在生产者和消费者之间传递数据,使用一个有界缓冲区(例如,`ArrayBlockingQueue`)作为它们之间的通信通道。要求:1.创建一个`Producer`类,该类包含一个`produce()`方法,用于生成数据。生成的数据应该......
  • Java 形参 实参 参数传递
    Java形参实参在Java中,形参和实参是两个重要的概念,它们分别指形式参数和实际参数。形参:形式参数是在方法定义时用于接收调用该方法时传递的参数。它只在方法内部有效,方法结束后就消失了。实参:实际参数是在调用方法时传递给方法的参数,它可以是常量、变量、表达式、或者方法的......
  • 框架(Java相关)基础
    框架前置知识时间:2024-05-20星期一学习内容Maven构建工具Maven的核心特性Maven的依赖管理Maven的工程打包工厂模式设计模式工厂模式工厂模式的引用场景反射机制反射及作用反射的四个核心类反射在项目中的应用Lambda表达式Lamb......
  • 计算机Java项目|基于springboot的网上购物商城系统研发
    作者主页:编程指南针作者简介:Java领域优质创作者、CSDN博客专家、CSDN内容合伙人、掘金特邀作者、阿里云博客专家、51CTO特邀作者、多年架构师设计经验、腾讯课堂常驻讲师主要内容:Java项目、Python项目、前端项目、人工智能与大数据、简历模板、学习资料、面试题库、技术互......
  • 计算机Java项目|基于Springboot甘肃非物质文化网站的设计与开发
    作者主页:编程指南针作者简介:Java领域优质创作者、CSDN博客专家、CSDN内容合伙人、掘金特邀作者、阿里云博客专家、51CTO特邀作者、多年架构师设计经验、腾讯课堂常驻讲师主要内容:Java项目、Python项目、前端项目、人工智能与大数据、简历模板、学习资料、面试题库、技术互......
  • 计算机Java项目|Springboot教师工作量管理系统
    作者主页:编程指南针作者简介:Java领域优质创作者、CSDN博客专家、CSDN内容合伙人、掘金特邀作者、阿里云博客专家、51CTO特邀作者、多年架构师设计经验、腾讯课堂常驻讲师主要内容:Java项目、Python项目、前端项目、人工智能与大数据、简历模板、学习资料、面试题库、技术互......