Java I/O 教程(七) DataOutputStream和DataInputStream

Java DataOutputStream Class


Java DataOutputStream class 可以以机器无关方式往指定输出流写入Java原始数据类型,例如int, double, long等。

类定义


public class DataOutputStream extends FilterOutputStream implements DataOutput  

构造函数

DataOutputStream(OutputStream out)
创建一个新的数据输出流往底层输出流写数据

常用函数

int size()                                    返回写入数据输出流字节数
void write(int b)                            写入指定字节
void write(byte[] b, int off, int len)         每次写入len长度字节
void writeBoolean(boolean v)                写入boolean,占1个字节
void writeChar(int v)                        写入char,占2个字节
void writeChars(String s)                    以字符序列方式写入字符串
void writeByte(int v)                        写字节
void writeBytes(String s)                    以字节序列方式写入字符串
void writeInt(int v)                        写入int
void writeShort(int v)                        写入short
void writeLong(long v)                        写入long
void writeUTF(String str)                    以UTF8格式往输出流写入字符串
void flush()                                冲刷数据输出流

例子

package com.dylan.io;

import java.io.DataOutputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.OutputStream;

/**
 * @author xusucheng
 * @create 2018-01-06
 **/
public class DataOutputStreamDemo {
    public static void main(String[] args) throws IOException{
        OutputStream fos = new FileOutputStream("D:\\testout.txt");
        DataOutputStream dos = new DataOutputStream(fos);
        dos.writeInt(65);
        dos.writeUTF("Java is great!");
        dos.flush();
        dos.close();

        System.out.println("写入成功!");
    }
}


Java DataInputStream Class


Java DataInputStream class 允许应用程序以机器无关方式从指定输入流读取java原始数据

类定义


public class DataInputStream extends FilterInputStream implements DataInput  

构造函数

DataInputStream(InputStream in)
使用指定的输入流创建一个数据输入流

常用方法

int read(byte[] b)                            读取字节
int read(byte[] b, int off, int len)        每次读取len长度字节
int readInt()                                读取int
byte readByte()                                读取一个字节
char readChar()                                读取2个字节
double readDouble()                            读取8字节,返回一double类型值
boolean readBoolean()                        读取一个字节,如果非0返回true,否则返回false
int skipBytes(int x)                        跳过x个字节
String readUTF()                            以UTF8格式读取一个字符串
void readFully(byte[] b)                    从输入流读取字节并存在缓冲数组中
void readFully(byte[] b, int off, int len)    从输入流读取len字节

例子

package com.dylan.io;

import java.io.DataInputStream;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;

/**
 * @author xusucheng
 * @create 2018-01-06
 **/
public class DataInputStreamDemo {
    public static void main(String[] args) throws IOException{
        InputStream is = new FileInputStream("D:\\testout.txt");
        DataInputStream dis = new DataInputStream(is);
        int count = dis.available();
        byte[] bytes = new byte[count];
        dis.read(bytes);
        for(byte b:bytes){
            char c = (char)b;
            System.out.print(c);
        }
        dis.close();
    }
}



下一章

Java I/O 教程(八) Writer和Reader


posted @ 2018-01-06 18:50  一锤子技术员  阅读(3)  评论(0编辑  收藏  举报  来源