Javase的文件与流简介

Javase的文件与流简介

一、 文件管理的概述
1、Java中的对文件的管理,通过java.io包中的File类实现
2、Java中文件的管理,主要针对文件或目录路径名的管理
文件的属性信息、文件的检查、文件的删除、不包括文件的访问。
二、 流的概念及API
1、流(stream)的概念代表的是程序中数据的流通
2、数据流是一串连续不断的数据的集合,
3、在java程序中,从输入流读取数据(读到内存中),而从输出流输出数据(从内存存储到文件或显示到屏幕上)
在这里插入图片描述
三、 流的概念
1、 按流的方向不同:输入流、输出流
2、 按处理数据的单位不同:字节流、字符流
3、 按功能不同:节点流、处理流
四、对象序列化概述
1、通过使用ObjectinputStream和ObjectoutputStream类保存和读取对象的机制叫做序列化机制
2、对象序列化是指对象转化为字节序列的过程
3、反序列化则是根据字节序列恢复对象的过程
4、序列化一般用于以下场景
永久性保存对象,保存对象的字节序列到本地文件中
通过序列化对象在网络中传递对象
通过序列化在进程间传递对象
五、 对象序列化条件
1、 该对象类必须实现Serializable接口
2、 如果该类有直接或者间接的不可序列化的基类,那么该基类必须有一个默认的构造器。该派生类需要负责将其基类的数据写入流中。
3、
在这里插入图片描述
4、
在这里插入图片描述
练习题:
Student类:

public class Student extends Person{
	/**
	 * 
	 */
	private static final long serialVersionUID = 2029845056621238802L;

	
	private int sid;
	private String name;
	private int age;
	private transient String sex;  //使用transient修饰的属性不会被序列化
	
	
	
	public int getSid() {
		return sid;
	}
	public void setSid(int sid) {
		this.sid = sid;
	}
	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 String getSex() {
		return sex;
	}
	public void setSex(String sex) {
		this.sex = sex;
	}
	@Override
	public String toString() {
		return "Student [sid=" + sid + ", name=" + name + ", age=" + age + ", sex=" + sex + "]";
	}
	
	
}

Person类:

import java.io.Serializable;

public class Person implements Serializable{
	//对象能够序列化的必要条件:实现Serializable接口

}

主类:

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

import com.neuedu.chapter03.序列化类.Student;

public class ObjectOutputStreamDemo {
	
	public static void main(String[] args) {
		FileOutputStream output=null;
		FileInputStream input=null;
		try {
			//序列化
			output=new FileOutputStream("File/student.txt",true);
			ObjectOutputStream out=new ObjectOutputStream(output);
			
			//反序列化
			input=new FileInputStream("File/student.txt");
			ObjectInputStream in=new ObjectInputStream(input);
			
			Student s1=new Student();
			s1.setSid(1234);
			s1.setName("哈哈");
			s1.setAge(18);
			**s1.setSex("珊珊是猪");//这里的属性加了transient关键字所有不会显示**
			
			//将对象写进文件
			out.writeObject(s1);
			
			//将对象从文件中读取
			System.out.println(in.readObject().toString());
			
		} catch (FileNotFoundException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} catch (ClassNotFoundException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}
}

在这里插入图片描述

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值