zoukankan      html  css  js  c++  java
  • Java中I/O流之数据流

    Java 中的数据流:

      对于某问题:将一个 long 类型的数据写到文件中,有办法吗?

        转字符串 → 通过 getbytes() 写进去,费劲,而且在此过程中 long 类型的数需要不断地转换.

          现在,Java 中的数据流能够很好的解决这个问题(不需要转换,直接写进去)

    1. DataInputStream 与 DataOutputStream 分别继承自 InputStream、OutputStream, 它属于处理流,需要分别套接在 InputStream、OutputStream 类型的节点流上面.

    2. DataInputStream 与 DataOutputStream 提供了可以存取与机器无关的 java 原始类型数据(如:int, double 等)的方法.

    3. DataInputStream 与 DataOutputStream 的构造方法为:

      DataInputStream(InputStream in )

      DataOutputStream(OutputStram out)

    【注】UTF(Unicode 字符串):网络上经常使用;UTF-8 比 UTF-16 省空间.

    Demo_1:

    import java.io.*;
    class Test {
    	public static void main(String[] args) {
    		ByteArrayOutputStream baos = new ByteArrayOutputStream(); // 首先在内存上面分配一个字节数组,某根管道接上去(接在内存上面的一块内容上面)
    		DataOutputStream dos = new DataOutputStream(baos); // baos管道不好用,外那再套接一根管道dos
    		try {
    			dos.writeDouble(Math.random());
    			dos.writeBoolean(false);
    			ByteArrayInputStream bais = new ByteArrayInputStream(baos.toByteArray()); // 通过baos的toByteArray()就能够拿到关于这个数组的引用
    			System.out.println(bais.available()); // bais中有多少个字节可供读;
    			DataInputStream dis = new DataInputStream(bais); // 从字节数组中读的时候,里面是什么(字符串吗?...不清楚),故需要再套接一层管道
    			System.out.println(dis.readDouble()); // 先写先读
    			System.out.println(dis.readBoolean());
    			dos.close();
    			baos.close();
    			dis.close();
    			bais.close();
    		} catch (IOException e) {
    			e.printStackTrace();
    		}
    	}
    }
    

    运行结果:

    9
    0.1088353250890215
    false

  • 相关阅读:
    tomcat配置环境变量
    Java实现简单的正则表达式匹配
    vi编辑器用法
    MyEclipse中自定义maven命令(添加maven 命令)
    dos窗口编译*.java文件 解决 java “错误:编码GBK 的不可映射字符”
    如何循环枚举类型
    Java枚举的小用法
    Java读取maven目录下的*.properties配置文件
    用MyEclipse将Maven Dependencies中的jar包导出
    MD5加密与base64编码
  • 原文地址:https://www.cnblogs.com/bosongokay/p/6798683.html
Copyright © 2011-2022 走看看