DataInputStream在Java中的使用

一、DataInputStream簡介

DataInputStream是Java IO包中的一個類,用於讀取二進制數據。它提供了一系列讀取不同數據類型(如int、byte、char等)的方法。該類包含在與輸入流相關的類中,因此常與FileInputStream等一起使用。

二、DataInputStream的構造函數

public DataInputStream(InputStream in)

該構造函數參數為輸入流,在使用DataInputStream的時候需要先定義一個輸入流。

三、DataInputStream的常用方法

1.read()

public final int read() throws IOException

該方法從輸入流中讀取下一個位元組,並返回位元組的值。如果已經到達流的末尾,則返回-1。

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

public final int read(byte[] b,
         int off,
         int len)
          throws IOException

該方法從輸入流中讀取len個位元組的數據,並將其存儲在byte數組中,從off位置開始存儲。返回讀取到的位元組數。

3.readBoolean()

public final boolean readBoolean() throws IOException

該方法從輸入流中讀取1個位元組的數據,並返回一個布爾值。

4.readByte()

public final byte readByte() throws IOException

該方法從輸入流中讀取1個位元組的數據,並返回一個byte類型的值。

5.readChar()

public final char readChar() throws IOException

該方法從輸入流中讀取2個位元組的數據,並返回一個char類型的值。

6.readDouble()

public final double readDouble() throws IOException

該方法從輸入流中讀取8個位元組的數據,並返回一個double類型的值。

7.readFloat()

public final float readFloat() throws IOException

該方法從輸入流中讀取4個位元組的數據,並返回一個float類型的值。

8.readInt()

public final int readInt() throws IOException

該方法從輸入流中讀取4個位元組的數據,並返回一個int類型的值。

9.readLong()

public final long readLong() throws IOException

該方法從輸入流中讀取8個位元組的數據,並返回一個long類型的值。

10.readShort()

public final short readShort() throws IOException

該方法從輸入流中讀取2個位元組的數據,並返回一個short類型的值。

11.readUTF()

public final String readUTF() throws IOException

該方法從輸入流中讀取一個UTF格式的字符串,並返回一個字符串值。

四、DataInputStream的使用示例

下面的代碼演示了如何使用DataInputStream類讀取一個二進制文件中的int、double、boolean、UTF格式的字符串。

import java.io.*;

public class DataInputStreamExample {

    public static void main(String[] args) {
        InputStream inputStream = null;
        DataInputStream dataInputStream = null;

        try {
            inputStream = new FileInputStream("test.dat");
            dataInputStream = new DataInputStream(inputStream);

            //讀取int類型數據
            int intData = dataInputStream.readInt();
            System.out.println("讀取int類型數據:" + intData);

            //讀取double類型數據
            double doubleData = dataInputStream.readDouble();
            System.out.println("讀取double類型數據:" + doubleData);

            //讀取boolean類型數據
            boolean booleanData = dataInputStream.readBoolean();
            System.out.println("讀取boolean類型數據:" + booleanData);

            //讀取UTF格式字符串
            String strData = dataInputStream.readUTF();
            System.out.println("讀取UTF格式字符串數據:" + strData);

        } catch (IOException e) {
            e.printStackTrace();
        } finally {
            try {
                inputStream.close();
                dataInputStream.close();
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
    }
}

五、總結

使用DataInputStream可以方便地讀取二進制數據,並通過提供的各種方法讀取不同數據類型的值。在使用DataInputStream的時候應特別注意讀取數據的順序,不要出現讀取順序和存儲順序不一致的情況,否則將導致讀取到錯誤的數據。

原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-hk/n/205811.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
小藍的頭像小藍
上一篇 2024-12-07 17:47
下一篇 2024-12-07 17:47

相關推薦

  • Java JsonPath 效率優化指南

    本篇文章將深入探討Java JsonPath的效率問題,並提供一些優化方案。 一、JsonPath 簡介 JsonPath是一個可用於從JSON數據中獲取信息的庫。它提供了一種DS…

    編程 2025-04-29
  • java client.getacsresponse 編譯報錯解決方法

    java client.getacsresponse 編譯報錯是Java編程過程中常見的錯誤,常見的原因是代碼的語法錯誤、類庫依賴問題和編譯環境的配置問題。下面將從多個方面進行分析…

    編程 2025-04-29
  • Java騰訊雲音視頻對接

    本文旨在從多個方面詳細闡述Java騰訊雲音視頻對接,提供完整的代碼示例。 一、騰訊雲音視頻介紹 騰訊雲音視頻服務(Cloud Tencent Real-Time Communica…

    編程 2025-04-29
  • Java Bean加載過程

    Java Bean加載過程涉及到類加載器、反射機制和Java虛擬機的執行過程。在本文中,將從這三個方面詳細闡述Java Bean加載的過程。 一、類加載器 類加載器是Java虛擬機…

    編程 2025-04-29
  • Java Milvus SearchParam withoutFields用法介紹

    本文將詳細介紹Java Milvus SearchParam withoutFields的相關知識和用法。 一、什麼是Java Milvus SearchParam without…

    編程 2025-04-29
  • Java 8中某一周的周一

    Java 8是Java語言中的一個版本,於2014年3月18日發佈。本文將從多個方面對Java 8中某一周的周一進行詳細的闡述。 一、數組處理 Java 8新特性之一是Stream…

    編程 2025-04-29
  • Java判斷字符串是否存在多個

    本文將從以下幾個方面詳細闡述如何使用Java判斷一個字符串中是否存在多個指定字符: 一、字符串遍歷 字符串是Java編程中非常重要的一種數據類型。要判斷字符串中是否存在多個指定字符…

    編程 2025-04-29
  • VSCode為什麼無法運行Java

    解答:VSCode無法運行Java是因為默認情況下,VSCode並沒有集成Java運行環境,需要手動添加Java運行環境或安裝相關插件才能實現Java代碼的編寫、調試和運行。 一、…

    編程 2025-04-29
  • Java任務下發回滾系統的設計與實現

    本文將介紹一個Java任務下發回滾系統的設計與實現。該系統可以用於執行複雜的任務,包括可回滾的任務,及時恢復任務失敗前的狀態。系統使用Java語言進行開發,可以支持多種類型的任務。…

    編程 2025-04-29
  • Java 8 Group By 會影響排序嗎?

    是的,Java 8中的Group By會對排序產生影響。本文將從多個方面探討Group By對排序的影響。 一、Group By的概述 Group By是SQL中的一種常見操作,它…

    編程 2025-04-29

發表回復

登錄後才能評論