Java中的Java.io.DataOutputStream

作者: Arvin Chen 分类: Java 来源: Break易站(www.breakyizhan.com)

Java中的Java.io.DataOutputStream

数据输出流允许应用程序以便携方式将原始Java数据类型写入输出流。然后应用程序可以使用数据输入流来读取数据。

构造函数和说明:

  • DataOutputStream(OutputStream out):创建一个新的数据输出流,将数据写入指定的基础输出流。

重要方法:

  • void flush():刷新这个数据输出流。
    Syntax :public void flush()
               throws IOException
    Overrides:
    flush in class FilterOutputStream
    Throws:
    IOException
  • int size():返回写入的计数器的当前值,即写入该数据输出流的字节数。
    Syntax :public final int size()
    Returns:
    the value of the written field.
  • void write(byte [] b,int off,int len):将指定字节数组中的len个字节从偏移量off开始写入底层输出流。
    Syntax :public void write(byte[] b,
             int off,
             int len)
               throws IOException
    Overrides:
    write in class FilterOutputStream
    Parameters:
    b - the data.
    off - the start offset in the data.
    len - the number of bytes to write.
    Throws:
    IOException
  • void write(int b):将指定的字节(参数b的低8位)写入基础输出流。
    Syntax :public void write(int b)
               throws IOException
    Overrides:
    write in class FilterOutputStream
    Parameters:
    b - the byte to be written.
    Throws:
    IOException
  • void writeBoolean(boolean v):将一个布尔值作为一个1字节值写入基础输出流。
    Syntax :public final void writeBoolean(boolean v)
                            throws IOException
    Parameters:
    v - a boolean value to be written.
    Throws:
    IOException
  • void writeByte(int v):将一个字节作为1字节值写入基础输出流。
    Syntax :public final void writeByte(int v)
                         throws IOException
    Parameters:
    v - a byte value to be written.
    Throws:
    IOException
  • void writeChar(int v):将一个char作为一个2字节值写入底层输出流,先写入高字节。
    Syntax :public final void writeChar(int v)
                         throws IOException
    Parameters:
    v - a char value to be written.
    Throws:
    IOException
  • void writeDouble(double v):使用Double类中的doubleToLongBits方法将double参数转换为long,然后将该long值作为8字节数量写入基础输出流,高字节优先。
    Syntax :public final void writeDouble(double v)
                           throws IOException
    Parameters:
    v - a double value to be written.
    Throws:
    IOException
  • void writeFloat(float v): 使用Float类中的floatToIntBits方法将float参数转换为int,然后将该int值作为4字节数量(最高位为MSB)写入基础输出流。
    Syntax :public final void writeFloat(float v)
                          throws IOException
    Parameters:
    v - a float value to be written.
    Throws:
    IOException
  • void writeInt(int v):将一个int作为四个字节写入基础输出流,先写高字节。
    Syntax :public final void writeInt(int v)
                        throws IOException
    Parameters:
    v - an int to be written.
    Throws:
    IOException
  • void writeLong(long v):将一个long写入基础输出流,为八个字节,先写高字节。
    Syntax :public final void writeLong(long v)
                         throws IOException
    Parameters:
    v - a long to be written.
    Throws:
    IOException
  • void writeShort(int v):将一个short写入基础输出流作为两个字节,高字节在前。
    Syntax :public final void writeShort(int v)
                          throws IOException
    Parameters:
    v - a short to be written.
    Throws:
    IOException
  • void writeUTF(String str):以与机器无关的方式使用修改的UTF-8编码将字符串写入基础输出流。
    Syntax :public final void writeUTF(String str)
                        throws IOException
    Parameters:
    str - a string to be written.
    Throws:
    IOException

一些重要方法的实施
方案:

//Java program to demonstrate DataOutputStream
// This program uses try-with-resources. It requires JDK 7 or later.

import java.io.*;
class DataOutputStreamDemo
{
	public static void main(String args[]) throws IOException
	{
		//writing the data using DataOutputStream
		try ( DataOutputStream dout =
					new DataOutputStream(new FileOutputStream("file.dat")) )
		{
			dout.writeDouble(1.1);
			dout.writeInt(55);
			dout.writeBoolean(true);
			dout.writeChar('4');
		}
		catch(FileNotFoundException ex)
		{
			System.out.println("Cannot Open the Output File");
			return;
		}
		
		// reading the data back using DataInputStream
		try ( DataInputStream din =
					new DataInputStream(new FileInputStream("file.dat")) )
		{
			double a = din.readDouble();
			int b = din.readInt();
			boolean c = din.readBoolean();
			char d=din.readChar();
			System.out.println("Values: " + a + " " + b + " " + c+" " + d);
		}
		catch(FileNotFoundException e)
		{
			System.out.println("Cannot Open the Input File");
			return;
		}
	}
}

输出:

Values: 1.1 55 true 4

重点:

  • DataOutputStream和DataInputStream经常一起使用。
  • 当关闭DataOutputStream(通过调用close())时,由out指定的基础流也会自动关闭。
  • 不再有明确的close()方法调用。try-with-resources结构会照顾到这一点。
  •   本文标题:Java中的Java.io.DataOutputStream - Break易站
    转载请保留页面地址:https://www.breakyizhan.com/java/4299.html

    发表笔记

    电子邮件地址不会被公开。 必填项已用*标注

    更多阅读