首页 > 代码库 > JAVA DataOutputStream和DataInputStream

JAVA DataOutputStream和DataInputStream

是Java中输入输出流的装饰类

DataOutputStream 数据输出流允许应用程序以适当方式将基本 Java 数据类型写入输出流中。然后,应用程序可以使用数据输入流将数据读入。

主要方法:

void write(byte[] b,int off,int len);//将byte数组off角标开始的len个字节写到OutputStream 输出流对象中。

void write(int b);//将指定字节的最低8位写入基础输出流。

void writeBoolean(boolean b);//将一个boolean值以1-byte形式写入基本输出流。

void writeByte(int v);//将一个byte值以1-byte值形式写入到基本输出流中。

void writeBytes(String s);//将字符串按字节顺序写入到基本输出流中。

void writeChar(int v);//将一个char值以2-byte形式写入到基本输出流中。先写入高字节。

void writeInt(int v);//将一个int值以4-byte值形式写入到输出流中先写高字节。

void writeUTF(String str);//以机器无关的的方式用UTF-8修改版将一个字符串写到基本输出流。该方法先用writeShort写入两个字节表示后面的字节数。

int size();//返回written的当前值

 

DataInputStream  允许应用程序以与机器无关方式从底层输入流中读取基本 Java 数据类型。应用程序可以使用数据输出流写入后由数据输入流读取的数据。

主要方法:

int read(byte[] b);//从输入流中读取一定的字节,存放到缓冲数组b中。返回缓冲区中的总字节数。

int read(byte[] buf,int off,int len);//从输入流中一次读入len个字节存放在字节数组中的偏移off个字节及后面位置。

String readUTF();//读入一个已使用UTF-8修改版格式编码的字符串

String readLine();

boolean readBoolean;

int readInt();

byte readByte();

char readChar();

 

注意:DataInputStream与DataOutputStream必须成对出现  DataInputStream读数据时,需要和DataOutputStream写入时的顺序一致,也不能跳过读

package io;

import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;

public class DataIOTest
{
    public static void main(String[] args)
    {
        writeData();
        readData();
    }

    private static void writeData()
    {
        DataOutputStream dos = null;
        try
        {
            dos = new DataOutputStream(new FileOutputStream(new File("dataoutput.txt")));
        } catch (FileNotFoundException e1)
        {
            e1.printStackTrace();
        }
        try
        {
            dos.writeInt(123);
            dos.writeByte(‘C‘);
            dos.writeDouble(12.345);
            dos.writeFloat((float) 1.23);
            dos.writeUTF("this is a string");
            dos.flush();
        } catch (IOException e)
        {
            e.printStackTrace();
        } finally
        {
            if (null != dos)
            {
                try
                {
                    dos.close();
                } catch (IOException e)
                {
                    e.printStackTrace();
                }
            }
        }
    }

    private static void readData()
    {
        DataInputStream dis = null;
        try
        {
            dis = new DataInputStream(new FileInputStream(new File("dataoutput.txt")));
        } catch (FileNotFoundException e)
        {
            e.printStackTrace();
        }
        try
        {
            System.out.println(dis.readInt());
            System.out.println((char)dis.readByte());
            System.out.println(dis.readDouble());
            System.out.println(dis.readFloat());
            System.out.println(dis.readUTF());
        } catch (IOException e)
        {
            e.printStackTrace();
        } finally
        {
            if (null != dis)
            {
                try
                {
                    dis.close();
                } catch (IOException e)
                {
                    e.printStackTrace();
                }
            }
        }
    }
}

 

JAVA DataOutputStream和DataInputStream