java IO流--数据流和对象流

import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.io.File;
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 java.io.Serializable;

public class DuiX {
	public static void main(String[] args) {
		//要用DataInputStream 读取一个文件,这个文件必须是由DataOutputStream 写出的,
				//否则会出现EOFException,因为DataOutputStream 在写出的时候会做一些特殊标记,
				//只有DataInputStream 才能成功的读取
	}
	//数据流--读
	static void read() throws IOException {
		 File file=new File("要读写的文件");
		 FileInputStream fis=new FileInputStream(file);
		 DataInputStream dis=new DataInputStream(fis);
		 boolean b=dis.readBoolean();//读取布尔类型值
		 int i=dis.readInt();//读取整数类型的值
		 String srt=dis.readUTF();//读取字符串类型的值
		 System.out.println("读取到布尔值:"+b);
         System.out.println("读取到整数:"+i);
         System.out.println("读取到字符串:"+srt);
	}
	//写
	static void write() throws IOException {
		File file=new File("目标文件");
		FileOutputStream fos=new FileOutputStream(file);
		//数据输出流
		DataOutputStream dos=new DataOutputStream(fos);
		//开始写数据
		dos.writeBoolean(true);//写布尔类型
		dos.writeInt(250);//写整数型
		dos.writeUTF("DFDSGCXG");//写字符串类型
		dos.close();
		fos.close();
	}
	//对象流--将一个对象写进一个文件里
	static void writeDx() throws IOException {
		File file=new File("写入的文件");
		FileOutputStream fos=new FileOutputStream(file);
		ObjectOutputStream ops=new ObjectOutputStream(fos);
		//开始写对象
		Person p1=new Person("翠花", 188);
		System.out.println(p1);//com.Person@70dea4e
		ops.writeObject(p1);
		fos.close();
		ops.close();
	}
	//将一个对象从文件中读取出来
	static void readDx() throws IOException, ClassNotFoundException {
		File file=new File("要读取对象的文件");
		FileInputStream fis=new FileInputStream(file);
		ObjectInputStream ois=new ObjectInputStream(fis);
		Person targetPerson=(Person) ois.readObject();
		System.out.println(targetPerson);//com.Person@3b07d329
		ois.close();
		fis.close();
	}
}

class Person implements Serializable{
	/**
	 * 1L 代表版本
	 */
	private static final long serialVersionUID = 1L;
	public Person(String name, int age) {
		this.name = name;
		this.age = age;
	}
	private String name;
	private int age;
	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;
	}
	//hashcode--toString
}

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值