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


Java InputStream轉String用法及代碼示例


讀取和寫入操作是用戶在任何應用程序中執行的基本函數。每種編程語言都提供 I/O 流來讀取和寫入數據。 Java 的 FileInputStream 類和 FileOutputStream 類對文件進行 I/O 操作。 FileInputStream 類用於從文件中讀取數據,FileOutputStream 類用於將數據寫入文件。有幾種方法可以使用內置庫和外部庫將 InputStream 對象轉換為 Java 中的 String。

方法:將 InputStream 對象轉換為 String 的三種方法是:

  1. 使用 InputStreamReader 類
  2. 使用 BufferedReader 類
  3. 使用 Scanner 類

方法一:使用輸入流讀取器

InputStreamReader 將字節流轉換為字符流。它讀取字節流並使用指定的字符集將它們解碼為字符。如果未指定字符集,則使用默認字符集。

在此方法中,user-provided 文件名作為文件對象啟動的參數傳遞。此文件對象再次作為 InputStream 對象啟動的參數傳遞。 InputStreamReader 對象是通過傳遞 InputStream 對象來啟動的。 InputStreamReader 將字節流轉換為字符流。獲取的字符流使用 InputStreamReader 類的 read() 方法存儲在字符數組中。最後,將字符數組轉換為字符串。



實現方式:

Java


import java.util.*;
import java.io.*;
public class InputStreamReaderDemo {
  
    public static void main(String[] args)
    {
        Scanner s = new Scanner(System.in);
        System.out.println("Enter the file path:");
        String filename = s.nextLine();
        
        // Creating a File object
        File file = new File(filename);
        try {
            // Creating an InputStream object
            InputStream is = new FileInputStream(file);
            
            // creating an InputStreamReader object
            InputStreamReader isr = new InputStreamReader(is);
            
            // Creating a character array
            char charArray[] = new char[(int)file.length()];
            
            // Reading the contents of the reader
            isr.read(charArray);
            
            // Converting character array to a String
            String contents = new String(charArray);
            System.out.println(contents);
        }
        catch (IOException e) {
            System.out.println(e);
        }
    }
}

輸出:

方法二:使用緩衝閱讀器

BufferedReader 類用於從輸入源(此處為文件)讀取字符流。 BufferedReader 類的 readLine() 方法從緩衝區讀取器對象的內容中讀取每一行。

在下麵的示例中,用戶指定傳遞給 InputStream 構造函數以啟動 InputStream 對象的文件名。 InputStream 對象被傳遞給 InputStreamReader 構造函數。 BufferedReader 對象是使用 InputStreamReader 對象實例化的。創建一個 StringBuffer 對象,該對象存儲從 BufferedReader 對象讀取的行。最後,將 StringBuffer 對象的內容轉換為 String。

實現方式:



Java


// Importing java libraries
import java.io.*;
import java.util.Scanner;
  
public class GFG {
  
    // Main driver method
    public static void main(String[] args)
    {
        Scanner s = new Scanner(System.in);
        System.out.println("Enter the file path:");
        String filename = s.nextLine();
        try {
            // Creating an InputStream object
            InputStream is = new FileInputStream(filename);
  
            // creating an InputStreamReader object
            InputStreamReader isr
                = new InputStreamReader(is);
  
            // Creating a BufferedReader object
            BufferedReader br = new BufferedReader(isr);
            StringBuffer sb = new StringBuffer();
  
            String str;
  
            while ((str = br.readLine()) != null) {
                sb.append(str);
            }
            System.out.println(sb.toString());
        }
        catch (IOException e) {
            System.out.println(e);
        }
    }
}

輸出:

方法 3:使用掃描器

Scanner 類用於從標準輸入讀取輸入。 Scanner 類具有接受原始類型輸入的方法,例如整數、雙精度、浮點數以及字符串輸入。

在下麵的示例中,用戶指定傳遞給 InputStream 構造函數以啟動 FileInputStream 對象的文件名。然後將 FileInputStream 對象傳遞給 Scanner 類構造函數。掃描器對象的內容被迭代,並且獲取的每一行都附加到 StringBuffer 對象。最後,將 StringBuffer 內容轉換為 String 並打印到標準輸出。

實現方式:

Java


// Importing java libraries
import java.io.FileInputStream;
import java.io.IOException;
import java.util.Scanner;
  
public class GFG {
  
    // Main driver method
    public static void main(String[] args)
    {
  
        // Taking input from the user
        Scanner s = new Scanner(System.in);
        System.out.println("Enter the file path:");
        String filename = s.nextLine();
        try {
  
            // Creating an InputStream object
            FileInputStream fis
                = new FileInputStream(filename);
  
            // Creating a Scanner object
            Scanner sc = new Scanner(fis);
  
            // Reading line by line from scanner to
            // StringBuffer
  
            StringBuffer sb = new StringBuffer();
            while (sc.hasNext()) {
                sb.append(sc.nextLine());
            }
  
            System.out.println(sb.toString());
        }
  
        // Catch block to handle exceptions
        catch (IOException e) {
            System.out.println(e);
        }
    }
}

輸出




相關用法


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