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
}

你可能感兴趣的:(java,中级)