Java - DataInputStream 類



介紹

Java.io.DataInputStream 類允許應用程式以與機器無關的方式從底層輸入流讀取原始 Java 資料型別。以下是關於 DataInputStream 的重要要點:

  • 應用程式使用資料輸出流寫入稍後可由資料輸入流讀取的資料。

  • DataInputStream 不一定對多執行緒訪問安全。執行緒安全是可選的,由此類中方法的使用者負責。

類宣告

以下是Java.io.DataInputStream 類的宣告:

public class DataInputStream
   extends FilterInputStream
      implements DataInput

欄位

以下是Java.io.DataInputStream 類的欄位:

  • protected InputStream in - 這是要過濾的輸入流。

類建構函式

序號 建構函式和描述
1

DataInputStream(InputStream in)

這將建立一個使用指定的底層 InputStream 的 DataInputStream。

類方法

序號 方法和描述
1 int read(byte[] b)

此方法從包含的輸入流讀取一定數量的位元組,並將它們儲存到緩衝區陣列b中。

2 int read(byte[] b, int off, int len)

此方法最多讀取len位元組的資料,從包含的輸入流到一個位元組陣列。

3 boolean readBoolean()

此方法讀取一個輸入位元組,如果該位元組非零則返回 true,如果該位元組為零則返回 false。

4 byte readByte()

此方法讀取並返回一個輸入位元組。

5 char readChar()

此方法讀取兩個輸入位元組並返回一個 char 值。

6 double readDouble()

此方法讀取八個輸入位元組並返回一個 double 值。

7 float readFloat()

此方法讀取四個輸入位元組並返回一個 float 值。

8 void readFully(byte[] b)

此方法從輸入流讀取一些位元組並將它們儲存到緩衝區陣列b中。

9 void readFully(byte[] b, int off, int len)

此方法從輸入流讀取len個位元組。

10 int readInt()

此方法讀取四個輸入位元組並返回一個 int 值。

11 long readLong()

此方法讀取八個輸入位元組並返回一個 long 值。

12 short readShort()

此方法讀取兩個輸入位元組並返回一個 short 值。

13 int readUnsignedByte()

此方法讀取一個輸入位元組,將其零擴充套件為 int 型別,並返回結果,因此結果在 0 到 255 的範圍內。

14 int readUnsignedShort()

此方法讀取兩個輸入位元組並返回 0 到 65535 範圍內的 int 值。

15 String readUTF()

此方法讀取使用修改後的 UTF-8 格式編碼的字串。

16 static String readUTF(DataInput in)

此方法從流中讀取以修改後的 UTF-8 格式編碼的 Unicode 字串的表示形式;然後將此字串作為 String 返回。

17 int skipBytes(int n)

此方法嘗試跳過輸入流中 n 個位元組的資料,丟棄跳過的位元組。

繼承的方法

此類繼承自以下類的方法:

  • Java.io.FilterInputStream
  • Java.io.Object

示例

以下是一個演示 DataInputStream 和 DataOutputStream 的示例。此示例使用 DataOutputStream.writeUTF() 方法將字串寫入檔案 test.txt,然後使用 DataInputStream.readUTF() 方法讀取相同的字串。

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

public class DataOutputStreamDemo {
   public static void main(String[] args) throws IOException {
      InputStream is = null;
      DataInputStream dis = null;
      FileOutputStream fos = null;
      DataOutputStream dos = null;
      String[] buf = {"Hello", "World!!"};
      
      try {
         // create file output stream
         fos = new FileOutputStream("F:\\test.txt");
         
         // create data output stream
         dos = new DataOutputStream(fos);
         
         // for each string in the buffer
         for (String j:buf) {
         
            // write string encoded as modified UTF-8
            dos.writeUTF(j);        
         }
         
         // force data to the underlying stream
         dos.flush();
         
         // create file input stream
         is = new FileInputStream("F:\\test.txt");
         
         // create new data input stream
         dis = new DataInputStream(is);
         
         // read till end of the stream
         while(dis.available()>0) {
         
            // reads characters encoded with modified UTF-8
            String k = dis.readUTF();
            
            // print
            System.out.print(k+" ");
         }
         
      } catch(Exception e) {
         // if any I/O error occurs
         e.printStackTrace();
      } finally {
         // releases all system resources from the streams
         if(is!=null)
            is.close();
         if(dos!=null)
            is.close();
         if(dis!=null)
            dis.close();
         if(fos!=null)
            fos.close();
      }
   }
}

輸出

Hello World!! 
java_files_io.htm
廣告
© . All rights reserved.