當前位置: 首頁>>代碼示例 >>用法及示例精選 >>正文


Java InputStream和OutputStream的區別用法及代碼示例


流可以定義為數據序列或連續的數據流。流是處理輸入/輸出的清晰方法。流有兩種類型,如下所示:

Stream in Java

在上圖中,我們的InputStream和OutputStream將駐留在字節流中。那麽我們來討論一下字節流。

1. 字節流:字節流提供了一種處理字節輸入和輸出的便捷方式。字節流進一步分為各種類,但頂層層次類如下所示:

ByteStream in Java

1.1 InputStream:InputStream是Byte Stream的抽象類,說明流輸入,用於讀取,可以是文件、圖像、音頻、視頻、網頁等,都可以。因此,InputStream 一次從源讀取一項數據。

Input Stream in Java

1.2 OutputStream:OutputStream是Byte Stream的一個抽象類,說明流輸出,用於將數據寫入文件、圖像、音頻等。因此,OutputStream一次寫入一個數據到目的地。

OutputStream in Java

Difference between InputStream and OutputStream

InputStream 輸出流
1.它是一個說明Stream Input的抽象類。 1.它是一個抽象類,說明Stream Output。
2. InputStream 一次從源讀取一次數據。 2. OutputStream 一次將數據寫入目的地一次。

3. InputStream 由執行以下操作的方法組成:

  • 從輸入流中讀取下一個字節的數據並在文件末尾返回-1:公共抽象 int read()拋出 IOException
  • 關閉當前輸入流:公共 int available()拋出 IOException
  • 返回可以從當前輸入流讀取的字節數的估計值:公共無效close()拋出IOException

3. 輸出流由執行以下操作的方法組成:

  • 將一個字節寫入當前輸出流:public void write(int) 拋出 IOException
  • 將字節數組寫入當前輸出流:public void write(byte[])拋出IOException
  • 刷新當前的 OutputStream:公共無效flush()拋出IOException
  • 關閉當前輸出流:公共無效close()拋出IOException

4.InputStream的類型有:

  • FileInputStream
  • ByteArrayInputStream
  • FilterInputStream
  • ObjectInputStream

在這些類型中,最重要且最常用的類型是 FileInputStream。

4.OutputStream的類型有:

  • FileOutputStream
  • ByteArrayOutputStream
  • FilterOutputStream
  • ObjectOutputStream

在這些類型中,最重要且最常用的類型是FileOutput Stream。

輸入流程序:

在此程序中,文件gfg.txt由“GEEKSFORGEEKS”組成。

注意:該文件保存在保存 java 程序的同一位置,然後執行以下程序。如果文件保存在某個特定位置,則寫入詳細信息,例如:

FileInputStream fileIn=new FileInputStream("C:\\gfg.txt"); 

Java


// Imported to use methods 
import java.io.FileInputStream; 
  
// Main Class 
public class InputStreamExample { 
    public static void main(String args[]) 
    { 
        // Reading from Source file 
        try { 
            FileInputStream fileIn 
                = new FileInputStream("gfg.txt"); 
            int i = 0; 
            while ((i = fileIn.read()) != -1) { 
                System.out.print((char)i); 
            } 
            fileIn.close(); 
        } 
        catch (Exception e) { 
            System.out.println(e); 
        } 
    } 
}

輸出:

GEEKSFORGEEKS 

OutputStream 的程序

這裏gfg.txt 文件是空的,並且保存在保存Java 程序的同一位置。該程序將GeeksforGeeks寫入空文件中,如果文本成功寫入文件,則顯示消息“文件已成功更新”。

Java


// Imported to use inbuilt methods 
import java.io.FileOutputStream; 
  
// Main class 
public class OutputStreamExample { 
    public static void main(String args[]) 
    { 
        // Writing in file gfg.txt 
        try { 
            FileOutputStream fileOut 
                = new FileOutputStream("gfg.txt"); 
            String s = "GeeksforGeeks"; 
  
            // converting string into byte array 
            byte b[] = s.getBytes(); 
            fileOut.write(b); 
            fileOut.close(); 
            System.out.println( 
                "file is successfully updated!!"); 
        } 
        catch (Exception e) { 
            System.out.println(e); 
        } 
    } 
}

輸出:

file is successfully updated!!

當我們再次使用第一個程序讀取文件時,輸出如下所示:

GeeksforGeeks


相關用法


注:本文由純淨天空篩選整理自jagroopofficial大神的英文原創作品 Difference Between InputStream and OutputStream in Java。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。