DataInputStream:数据字节输入流。
DataOutputStream写的文件,只能使用DataInputStream去读。并且读的时候你需要提前知道写入的顺序。
读的顺序需要和写的顺序一致。才可以正常取出数据。
示例代码01:
public class DataInputStreamTest { public static void main(String[] args) { DataInputStream dis = null; try { dis = new DataInputStream(new FileInputStream("data")); //开始读 byte b = dis.readByte(); short s = dis.readShort(); int i = dis.readInt(); long l = dis.readLong(); float f = dis.readFloat(); double d = dis.readDouble(); boolean sex = dis.readBoolean(); char c = dis.readChar(); System.out.println(b); System.out.println(s); System.out.println(i); System.out.println(l); System.out.println(f); System.out.println(d); System.out.println(sex); System.out.println(c); } catch (FileNotFoundException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } finally { if(dis != null){ try { dis.close(); } catch (IOException e) { e.printStackTrace(); } } } } }
运行结果:
java.io.DataOutputStream:数据专属的流。
这个流可以将数据连同数据的类型一并写入文件。
注意:这个文件不是普通文本文档。(这个文件使用记事本打不开。)
示例代码02:
public class DataOutputStreamTest { public static void main(String[] args) { DataOutputStream dos = null; try { dos = new DataOutputStream(new FileOutputStream("data")); //写入 byte b = 100; short s = 200; int i = 300; long l = 400L; float f = 3.0f; double d = 3.14; boolean sex = true; char c = '中'; dos.writeByte(b); dos.writeShort(s); dos.writeInt(i); dos.writeLong(l); dos.writeFloat(f); dos.writeDouble(d); dos.writeBoolean(sex); dos.writeChar(c); //刷新 dos.flush(); } catch (FileNotFoundException e) { e.printStackTrace(); }catch(IOException e){ e.printStackTrace(); }finally { if(dos != null){ try { dos.close(); } catch (IOException e) { e.printStackTrace(); } } } } }
运行结果: