JavaIO基礎知識

Java IO(Input/Output)是Java中用來處理輸入/輸出的一套API,它可以幫助我們完成文件讀寫、網絡傳輸等操作。學習 Java I/O 是 Java 開發者的必修課程。在本篇文章中我們將介紹基礎的 Java IO 知識,並通過代碼示例來演示它們的使用。

一、Java IO 的基本概念

Java 的 IO 流通常被分為兩個大類:字節流和字符流。字節流和字符流的區別在於它們處理的數據單位不同。字節流以字節為單位進行讀寫操作,而字符流則以字符為單位進行讀寫操作。

Java IO 里最基本的類是java.io中的 InputStream 和 OutputStream。InputStream 和 OutputStream 是所有字節流的父類,提供了最基本的讀寫方法。

除了 InputStream 和 OutputStream,Java 還提供了字符流,其基本類是java.io中的 Reader 和 Writer。

二、Java IO 流的分類

Java IO 流分為四大類:字節輸入流、字節輸出流、字符輸入流和字符輸出流。四個類都是抽象類,不能直接使用。要實現讀寫操作需藉助其子類類。

1. 字節輸入流

字節輸入流可以從文件或者其它數據源中讀取字節數據,最基本的字節輸入流是 InputStream。

    try(InputStream inputStream = new FileInputStream("example.txt")) {
        int data = inputStream.read();
        while(data != -1) {
            System.out.println(data);
            data inputStream.read();
        }
    } catch(IOException e) {
        e.printStackTrace();
    }

以上代碼中,首先通過FileInputStream打開文件example.txt,然後通過read()方法一次一個字節地讀取文件內容。當read()方法返回-1時,表示文件已經讀取完畢,循環結束。

2. 字節輸出流

字節輸出流將數據以字節的方式寫入文件或其它輸出目的地中,最基本的字節輸出流是 OutStream。

    try(OutputStream outputStream = new FileOutputStream("example.txt")) {
        byte[] data = "Hello World".getBytes();
        outputStream.write(data);
    } catch(IOException e) {
        e.printStackTrace();
    }

以上代碼首先通過FileOutStream打開文件 example.txt,然後將“Hello World”轉換為字節數組,並使用write()方法將它們寫入文件中。

3. 字符輸入流

Java 中的字符流比較常用,最基本的字符輸入流是 Reader。

    try(Reader reader = new FileReader("example.txt")) {
        int data = reader.read();
        while(data != -1) {
            System.out.printf("%c", data);
            data = reader.read();
        }
    } catch(IOException e) {
        e.printStackTrace();
    }

以上代碼中,首先使用FileReader打開文件 example.txt,然後通過read()方法一次一個字符地讀取文件內容。當read()方法返回-1時,表示文件已經讀取完畢,循環結束。

4. 字符輸出流

Java 中的字符輸出流也比較常用,最基本的字符輸出流是 Writer。

    try(Writer writer = new FileWriter("example.txt")) {
        String data = "Hello World";
        writer.write(data);
    } catch(IOException e) {
        e.printStackTrace();
    }

以上代碼首先通過FileWrite打開文件 example.txt,然後將“Hello World”寫入文件中。

三、Java IO 流的操作

Java IO 流提供了各種不同的方法,可以通過它們實現不同的IO讀寫操作。

1. 文件操作

Java 的File類提供了訪問文件系統的方法,可以對文件和目錄進行訪問和操作。

    File file = new File("example.txt");
    if(file.exists()) {
        System.out.println("文件存在");
    } else {
        System.out.println("文件不存在");
    }

以上代碼使用Java內置的File對象來檢查文件是否存在。如果文件存在,則輸出“文件存在”,否則輸出“文件不存在”。

2. 緩存操作

緩存操作可以提高IO讀寫效率。Java IO 中的緩存類有BufferedReader、BufferedWriter、ByteArrayInputStream等。其中,Java 8 中已經提供了NIO類庫,NIO類庫相比IO類庫有更高的效率和更強的擴展性。

    try(BufferedReader reader = new BufferedReader(new FileReader("example.txt"))) {
        String data = null;
        while((data = reader.readLine()) != null) {
            System.out.println(data);
        }
    } catch(IOException e) {
        e.printStackTrace();
    }

以上代碼中,首先使用BufferedReader類對FileReader類進行了包裝,生成了一個字符輸入流。然後通過readLine()方法逐行讀取了文件內容,並輸出到控制台上。

3. 字節流操作

字節流操作可以對字節進行操作。Java IO中的字節流有ByteArrayInputStream、ByteArrayOutputStream、FileInputStream等。

    try(FileInputStream inputStream = new FileInputStream("example.txt")) {
        byte[] data = new byte[1024];
        int len = 0;
        while((len = inputStream.read(data)) != -1) {
            System.out.println(new String(data, 0, len));
        }
    } catch(IOException e) {
        e.printStackTrace();
    }

以上代碼首先通過FileInputStream類對文件進行讀取操作。然後使用read()方法逐個讀取文件內容,數據被緩存到 data 數組中。最後將讀取到的數據以字符串方式輸出到控制台上。

4. 字符流操作

字符流操作可以對字符進行操作,常用的字符流有FileReader、FileWriter等。

    try(FileReader reader = new FileReader("example.txt")) {
        char[] data = new char[1024];
        int len = 0;
        while((len = reader.read(data)) != -1) {
            System.out.println(new String(data, 0, len));
        }
    } catch(IOException e) {
        e.printStackTrace();
    }

以上代碼首先通過FileReader類對文件進行讀取操作。然後使用read()方法逐個讀取文件內容,數據被緩存到 data 數組中。最後將讀取到的數據以字符串方式輸出到控制台上。

四、總結

本文從Java IO 的基本概念、分類、操作等多個方面詳細講解了Java IO的基礎知識,並通過代碼示例展示了它們的具體使用。希望本文能夠幫助讀者了解Java IO,並更好地運用Java IO來完成自己的項目。

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

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

相關推薦

  • Python元祖排序:從基礎知識到高級應用

    Python元祖是一種不可變序列,通常用於將一組數據綁定在一起。元祖之間經常需要排序,本文將從基礎知識到高級應用,為你詳細講解Python元祖排序。 一、排序方法 Python提供…

    編程 2025-04-28
  • 計算機二級基礎知識題庫

    計算機二級基礎知識題庫考試為計算機二級考試的必修科目之一,其中包含了計算機的基本知識以及應用能力等內容。本文將從題庫概述、考試內容、備考建議以及編程實例等幾個方面進行介紹,希望對廣…

    編程 2025-04-27
  • 軟件測試理論基礎知識

    一、測試概述 軟件測試是指在已知測試用例的前提下,檢查軟件是否滿足規定的功能和質量要求的過程。 軟件測試的目的是要發現並糾正可能存在的缺陷。它涉及軟件開發周期的各個階段,從需求分析…

    編程 2025-04-23
  • MongoDB基礎知識

    一、什麼是MongoDB MongoDB是一個開源的文檔數據庫,它採用了類似於JSON的BSON數據格式,可以支持複雜數據結構和動態查詢。MongoDB可以減少不必要的關係型數據設…

    編程 2025-02-27
  • PS基礎知識詳解

    一、圖像的格式 1、我們常接觸的圖像格式有哪些? 在PS中,我們常用的圖像格式有:JPEG、PNG、GIF、RAW等。其中JPEG格式適用於圖像,PNG格式適用於圖像和圖標,GIF…

    編程 2025-02-25
  • 內存類型基礎知識

    從計算機誕生至今,RAM(隨機存取內存)在架構和形態上都經歷了重大變革。它們主要分為兩種類型:SRAM(靜態隨機存取內存)和 DRAM(動態隨機存取內存)。 DRAM 又可細分為同…

    2025-02-24
  • 圖像復原基礎知識

    一、噪聲的影響 在數字圖像中,噪聲是無法避免的,而它的出現通常是由於圖像採集、傳輸和處理等過程中引入的。噪聲的存在對於圖像的清晰度和細節造成了不同程度的影響,因此在圖像復原中需要特…

    編程 2025-02-11
  • 魔術封包喚醒基礎知識

    一、概念概述 魔術封包喚醒是指一種技術方式,在網絡通信中用於喚醒特定設備的一種技術手段,其原理是在局域網內向目標設備發送一種特定的喚醒包,當目標設備接收到該喚醒包後,即可從睡眠狀態…

    編程 2025-02-01
  • Linux基礎知識

    一、Linux簡介 Linux操作系統是一種基於Unix操作系統的自由軟件和開源軟件,是自由操作系統中最著名的一個。 Linux操作系統包含了一整套完善的工具集,包括系統工具、應用…

    編程 2025-01-27
  • C++運算符:基礎知識、用法和示例

    C++運算符是用於計算、比較或邏輯操作的特殊符號。本文將詳細介紹C++運算符的基礎知識、用法和示例,包括算術運算符、關係運算符、邏輯運算符、位運算符和其他運算符。 一、算術運算符 …

    編程 2025-01-14

發表回復

登錄後才能評論