Java中的流(Stream)是用于處理輸入和輸出的一種抽象概念。流可以分為兩種類型:輸入流(InputStream)和輸出流(OutputStream)。輸入流主要用于從數據源(如文件、網絡連接等)讀取數據,而輸出流主要用于將數據寫入目標(如文件、網絡連接等)。
Java提供了豐富的流類來處理輸入輸出操作。以下是一些常用的輸入輸出流類:
輸入流(InputStream):這是所有字節輸入流的基類。一些常用的子類包括FileInputStream(從文件讀取數據)、BufferedInputStream(帶緩沖的輸入流)和DataInputStream(可以讀取基本數據類型的輸入流)。
輸出流(OutputStream):這是所有字節輸出流的基類。一些常用的子類包括FileOutputStream(將數據寫入文件)、BufferedOutputStream(帶緩沖的輸出流)和DataOutputStream(可以將基本數據類型寫入輸出流)。
字符流(Reader和Writer):字符流是用于處理文本數據的輸入輸出流。它們是InputStreamReader和OutputStreamWriter類的子類,分別用于將字節流轉換為字符流。BufferedReader和BufferedWriter是常用的帶緩沖的字符流,可以提高文本讀寫的性能。
以下是一個簡單的Java輸入輸出流示例,用于從文件中讀取文本并將文本寫入另一個文件:
import java.io.*;
public class StreamExample {
public static void main(String[] args) {
// 創建輸入流,從文件"input.txt"中讀取數據
InputStream inputStream = new FileInputStream("input.txt");
// 使用BufferedReader進行帶緩沖的字符流讀取
BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(inputStream));
// 創建輸出流,將數據寫入文件"output.txt"
OutputStream outputStream = new FileOutputStream("output.txt");
// 使用BufferedWriter進行帶緩沖的字符流寫入
BufferedWriter bufferedWriter = new BufferedWriter(new OutputStreamWriter(outputStream));
// 讀取文本并寫入輸出流
String line;
try {
while ((line = bufferedReader.readLine()) != null) {
bufferedWriter.write(line);
bufferedWriter.newLine();
}
} catch (IOException e) {
e.printStackTrace();
} finally {
// 關閉流,釋放資源
try {
bufferedReader.close();
bufferedWriter.close();
inputStream.close();
outputStream.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
這個示例中,我們使用了FileInputStream和FileOutputStream類來創建輸入輸出流,然后使用BufferedReader和BufferedWriter類來進行帶緩沖的字符流讀寫操作。在讀取完數據后,我們需要關閉所有打開的流以釋放資源。在實際編程中,我們可以使用try-with-resources語句來自動關閉流,以避免資源泄漏。