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 无法解决。