• Java 输入/输出——处理流(DataInputStream/DataOutputStream、ByteArrayInputStream/ByteArrayOutputStream)


      DataInputStream和DataOutputStream分别继承字节流InputStream和OutputStream,它属于处理流,需要分别“套接”在InputStream和OutputStream类型的节点流上。

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

      DataInputStream和DataOutputStream的构造方法:

    • DataInputStream(InputStream in)
    • DataOutputStream(OutputStream out)

      ByteArrayInputStream和ByteArrayOutputStream的构造器和方法:

    ConstructorDescription
    ByteArrayInputStream​(byte[] buf)
    Creates a ByteArrayInputStream so that it uses buf as its buffer array.                                                             
    ByteArrayInputStream​(byte[] buf, int offset, int length)
    Creates ByteArrayInputStream that uses buf as its buffer array.
    All MethodsInstance MethodsConcrete Methods
    Modifier and TypeMethodDescription
    int available​()
    Returns the number of remaining bytes that can be read (or skipped over) from this input stream.                  
    void close​()
    Closing a ByteArrayInputStream has no effect.
    void mark​(int readAheadLimit)
    Set the current marked position in the stream.
    boolean markSupported​()
    Tests if this InputStream supports mark/reset.
    int read​()
    Reads the next byte of data from this input stream.
    int read​(byte[] b, int off, int len)
    Reads up to len bytes of data into an array of bytes from this input stream.
    void reset​()
    Resets the buffer to the marked position.
    long skip​(long n)
    Skips n bytes of input from this input stream.
    ConstructorDescription
    ByteArrayOutputStream​()
    Creates a new byte array output stream.
    ByteArrayOutputStream​(int size)
    Creates a new byte array output stream, with a buffer capacity of the specified size, in bytes.                                                                      
    All MethodsInstance MethodsConcrete MethodsDeprecated Methods
    Modifier and TypeMethodDescription
    void close​()
    Closing a ByteArrayOutputStream has no effect.
    void reset​()
    Resets the count field of this byte array output stream to zero, so that all currently accumulated output in the output stream is discarded.
    int size​()
    Returns the current size of the buffer.
    byte[] toByteArray​()
    Creates a newly allocated byte array.
    String toString​()
    Converts the buffer's contents into a string decoding bytes using the platform's default character set.
    String toString​(int hibyte)
    Deprecated. 
    This method does not properly convert bytes into characters. As of JDK 1.1, the preferred way to do this is via the toString(String enc) method, which takes an encoding-name argument, or the toString()method, which uses the platform's default character encoding.
    String toString​(String charsetName)
    Converts the buffer's contents into a string by decoding the bytes using the named charset.
    void write​(byte[] b, int off, int len)
    Writes len bytes from the specified byte array starting at offset off to this byte array output stream.
    void write​(int b)
    Writes the specified byte to this byte array output stream.
    void writeTo​(OutputStream out)
    Writes the complete contents of this byte array output stream to the specified output stream argument, as if by calling the output stream's write method using out.write(buf, 0, count).
     1 package com.zyjhandsome.io;
     2 
     3 import java.io.*;
     4 
     5 public class TestDataStream {
     6 
     7     public static void main(String[] args) {
     8         // TODO Auto-generated method stub
     9         ByteArrayOutputStream baos = new ByteArrayOutputStream();
    10         DataOutputStream dos = new DataOutputStream(baos);
    11         
    12         try {
    13             dos.writeDouble(Math.random());
    14             dos.writeBoolean(true);
    15             ByteArrayInputStream bais = new ByteArrayInputStream(baos.toByteArray());
    16             // bais.available()方法返回其占用的字节数目,double(8-byte)+boolean(1-byte)=9-byte
    17             System.out.println(bais.available());
    18             DataInputStream dis = new DataInputStream(bais);
    19             // 先存进去的是Double类型数据+Boolean类型的数据
    20             // 因此在读取时,也应该给先读取Double类型数据+Boolean类型的数据
    21             System.out.println(dis.readDouble());
    22             System.out.println(dis.readBoolean());
    23             dos.close();
    24             dis.close();            
    25         } catch (IOException e) {
    26             // TODO Auto-generated catch block
    27             e.printStackTrace();
    28         }        
    29     }
    30 }

      输出结果:

    1 9
    2 0.03791491702144656
    3 true
  • 相关阅读:
    js实现各种复制到剪贴板的方法
    PowerDesigner生成数据字典
    oracle实用sql之将逗号分割的字符串分割多个列
    ROW_NUMBER() OVER()函数用法;(分组,排序),partition by
    SQL Server 2008中的CTE递归查询得到一棵树
    【GoLang】GoLang 错误处理 -- 使用 error is value 的思路处理,检查并处理error
    【GoLang】golang 报管理工具 Godep 介绍
    【GoLang】GoLang 错误处理 -- 使用异常的思路进行处理
    【GoLang】GoLang 官方 对 error 处理的意见
    【GoLang】panic defer recover 深入理解
  • 原文地址:https://www.cnblogs.com/zyjhandsome/p/9698036.html
Copyright © 2020-2023  润新知