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

indexman發表於2018-01-06

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


相關文章