No.18基本データ型書き込みストリーム:DataInputStream/DataOutputStream

2547 ワード

概要:


DataOutputStreamデータ出力ストリーム:java基本データ型をデータ出力ストリームに書き込みます.DataInputStreamデータ入力ストリーム:DataOutputStreamをストリームに書き込むデータを読み込みます.
この2つのデータストリームはそれぞれFilterInputStream/FilterOutputStreamのサブクラスであり,その名の通りBufferストリームのように書き込みと読み出しの効率が向上している.

DataOutputStreamでのwriteメソッドの再ロード:

  • はバイトストリームの親クラスの2つの方法を継承している:(1)void write(byte[]b,int off,int len);(2)void write(int b);//バイトストリームベースクラスがstringに直接書き込むことができないことに注意する文字を表すUTF値を書き込むには、まずStringをgetByte()に変換してbyte配列に変換する
  • を書き込む必要がある.
  • 特有の指定基本データ型書き込み:(1)void writeBoolean(boolean b);//boolean値を1 byteで基本出力ストリームに書き込みます.(2)void writeByte(int v);//1つのbyte値を1 byte値として基本出力ストリームに書き込む.(3)void writeBytes(String s);//基本出力ストリームに文字列をバイト順に書き込みます.(4)void writeChar(int v);//基本出力ストリームにchar値を2 byteで書き込む.ハイバイトを先に書き込みます.書き込みも符号化値です.(5)void writeInt(int v);//int値を4 byte値で出力ストリームに書き込み、高バイトを書き込みます.(6)void writeUTF(String str);//基本出力ストリームには、UTF-8修正版でマシンに関係なく文字列が書き込まれます.この方法は,まずwriteShortで2バイトを書き込み,後のバイト数を表す.

  • DataInputStreamのreadメソッドの再ロード:

  • バイトストリームの親を継承する方法:int read();int read(byte[] b); int read(byte[] buf,int off,int len);
  • writeメソッドに対応する基本データ型の読み出し:String readUTF();//UTF-8で修正されたフォーマットで符号化された文字列boolean readBooleanを読み込みます.int readInt(); byte readByte(); char readChar();

  • 注意:


    基本データ型の書き込みストリームと出力ストリームは、どの順序でどのようにデータを書き込むか、どの順序でどのようにデータを読み出すかを保証しなければならない.そうしないと、文字化が乱れたり、異常が発生したりする.

    列:

    public class Test {
    
    public static void main(String[] args) {
        DataOutputStream dos = null;
        DataInputStream dis = null;
        try {
            // 
            dos = new DataOutputStream(new FileOutputStream("d://dataTest.txt"));
            dos.writeUTF(" ,ok");
            dos.writeInt(18888);
            dos.writeLong(188888);
            dos.writeByte(123);
            dos.writeFloat(1.344f);
            dos.writeBoolean(true);
            dos.writeDouble(1.444444d);
            dos.writeChar(49);
            
            dos.flush();
            dos.close();
            // 
            dis = new DataInputStream(new FileInputStream("d://dataTest.txt"));
    
            System.out.println(dis.readUTF());          
            System.out.println(dis.readInt());
            System.out.println(dis.readLong());
            System.out.println(dis.readByte());
            System.out.println(dis.readFloat());
            System.out.println(dis.readBoolean());
            System.out.println(dis.readDouble());
            System.out.println(dis.readChar());
            
            dis.close();
        } catch (IOException e) {
            e.printStackTrace();
        }
      }
    }