15 IO流(十二)——数据流Data InputStream/OutputStream 未学会

数据流的引入

Data流的父类是Filter抽象基类,也就是说Data流是装饰流。

数据流可以将数据的类型也一起传输。

数据流的读取写入顺序(数据类型的读写顺序)需要一致。

未完成代码

/**
*Data流、数据流
*1.为了演示,我们先将数据写入数据流,再从中读取出来
*2.读取的顺序与写出保持一致
*DataInputStream
*DataOutputStream
*/
import java.io.*;
public class _01DataTest
{
	public static void main(String[] args){
		//声明流
		ByteArrayOutputStream bos = null;
		DataOutputStream dos= null;
		ByteArrayInputStream bis = null;
		DataInputStream dis = null;
		try{
		//定义Data输出流
		bos = new ByteArrayOutputStream();//节点流
		//定义了输出流但没有输出目的地,当然也可以有,比如写到文件去
		dos = new DataOutputStream(new BufferedOutputStream(bos));
		//先将数据写入输出流
		byte[] data = {12,34,33,1};
		//dos.write(data);//写入一个数组
		dos.writeBoolean(false);//写入一个布尔值
		dos.writeByte(101);//写入一个byte值
		dos.writeShort(122);//写short值
		dos.write(99);//写入Int型
		dos.writeLong(990l);//写入long型
		dos.writeFloat(123.1f);//写入float型
		dos.writeDouble(123.3);//写入double型
		dos.writeChar('我');//写入一个字符值
		dos.writeChars("以前我没得选,现在我想做个好人");//将一个字符串作为字符序列写入
		dos.writeUTF("I讨厌0,,,");
		byte [] datas = bos.toByteArray();//将刚才的数据读出来
		//定义Data输入流并将datas作为输入源
		bis = new ByteArrayInputStream(datas);//datas作为Data输入流的源
		dis = new DataInputStream(bis);
		//再从输入流中读取数据
		//byte[] result = new byte[1024];
		//dis.read(result);
		//System.out.println(result);
		String utfResult = dis.readUTF();
		System.out.println(utfResult);
		boolean booleanResult = dis.readBoolean();
		System.out.println(booleanResult);
		}catch(IOException e){
			e.printStackTrace();
		}
	}
}

  

在43行报错:EOFException 无法解决。

posted @ 2019-11-25 09:43  Scorpicat  阅读(178)  评论(0编辑  收藏  举报