目录
数据流
数据流:用于操作基本数据类型和字符串 数据流将“基本数据类型与字符串类型”作为数据源,
从而允许程序以与机器无关的方式 从底层输入输出流中操作 Java 基本数据类型与字符串类型
1.先写入后读取
2.读取顺序与写入保持一致
数据流实验代码
package cn.sxt.IO02;
import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.io.IOException;
import cn.sxt.IO.ByteArrayCopy;
/*
* 数据流:用于操作基本数据类型和字符串
*
* 1.先写入后读取
* 2.读取顺序与写入保持一致
* 数据流将“基本数据类型与字符串类型”作为数据源,
* 从而允许程序以与机器无关的方式 从底层输入输出流中操作
* Java 基本数据类型与字符串类型
* DataOutputStream dos =new DataOutputStream(字节输出流) 文件输出流 或者字节数组
*/
public class Date_io {
public static void main(String[] args) throws IOException {
//写入
ByteArrayOutputStream bos=new ByteArrayOutputStream();//有一个特殊方法 toByteArray();可以将任何数据类型转换成字节数组
DataOutputStream dos =new DataOutputStream(new BufferedOutputStream(bos));//加上缓冲流
//操作数据类型+数据
dos.writeUTF("fashk");
dos.writeInt(19);
dos.writeBoolean(true);
dos.writeChar('s');
dos.flush();
byte date[]=bos.toByteArray();
//读取
DataInputStream dis=new DataInputStream(new BufferedInputStream(new ByteArrayInputStream(date)) );
//顺序跟写出一致
String msg= dis.readUTF();
System.out.println(msg);
}
}
对象流
对象流:比数据流多了操作对象的功能
1.先写入后读取
2.读取顺序与写入保持一致
3.对象数据还原
对象流实验代码
package cn.sxt.IO02;
import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.io.Serializable;
public class Object_IO {
public static void main(String[] args) throws IOException, ClassNotFoundException {
ObjectOutputStream oos =new ObjectOutputStream(new BufferedOutputStream(new FileOutputStream("test")));//加上缓冲流
oos.writeUTF("fashk");
//oos.writeInt(19);
//oos.writeBoolean(true);
//oos.writeChar('s');
//对象
oos.writeObject("sg");
Employee emp =new Employee("zt",50);
oos.writeObject(emp);
oos.flush();
oos.close();
//读取
ObjectInputStream ois=new ObjectInputStream(new BufferedInputStream(new FileInputStream("test")) );
//顺序跟写出一致
String msg= ois.readUTF();
System.out.println(msg);
//对象数据还原
Object str =ois.readObject();
Object empl=ois.readObject();
if (str instanceof String) {
String str1 = (String) str;
System.out.println(str1);
}
if (empl instanceof Employee) {
Employee empl1 = (Employee) empl;
System.out.println(empl1.getName()+empl1.getSalary());
}
}
}
class Employee implements Serializable{
private transient String name;
private double salary;
public Employee(String name, double salary) {
super();
this.name = name;
this.salary = salary;
}
public Employee() {
super();
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public double getSalary() {
return salary;
}
public void setSalary(double salary) {
this.salary = salary;
}
}