zoukankan      html  css  js  c++  java
  • 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
  • 相关阅读:
    解决类似 /usr/lib64/libstdc++.so.6: version `GLIBCXX_3.4.21' not found 的问题
    qemu vm setup network(ssh) with buildroot
    C: 当字符数组首指针转化成char *指针,sizeof(*ptr)不为array的size
    C 利用strtok, feof 截取字符串
    LINUX C: 获取本地指定网卡的IP地址
    C语言比较好的风格梳理
    perf-perf stat用户层代码分析
    内核调试-perf introduction
    内核调试-ftrace introduction
    【原创】VB6.0应用程序安装包的生成(Setup Factory 9.0制作安装包的方法)
  • 原文地址:https://www.cnblogs.com/zyjhandsome/p/9698036.html
Copyright © 2011-2022 走看看