Java流為中心的編程是Java編程的重要組成部分。流(stream)是Java編程中處理輸入和輸出(I/O)的基礎。Java中的流為程序提供了一種簡單、方便的處理I/O的方式。
一、流介紹
Java中的流(stream)是一種用於處理輸入/輸出(I/O)的抽象。Java中相對於I/O的流有兩個不同的類別:字節流和字符流。字節流以字節數組為基礎,而字符流以Unicode字符為基礎。從讀取或寫入的對象的類型來劃分,Java的流主要可以分為如下四種類型:
- 字節流(InputStream和OutputStream): 用於處理8位字節流
- 字符流(Reader和Writer): 用於處理Unicode字符流
- 字節緩衝流(BufferedInputStream和BufferedOutputStream): 帶有緩存功能的字節流,減少了對底層系統的調用,使得讀寫效率有所提高
- 字符緩衝流(BufferedReader和BufferedWriter): 帶有緩存功能的字符流,減少了對底層系統的調用,使得讀寫效率有所提高
二、流的應用
1. 數據讀取和處理
Java流可用於讀/寫文件,網絡連接或任何其他I/O數據源。可以從一個輸入流讀取數據,並在使用緩存區的情況下對數據執行某些操作,然後將結果寫入輸出流。
2. 流作為參數傳遞
Java中的方法可以使用流作為參數傳遞。例如下面的方法將一個字節數組(byte[])寫入輸出流:
public void writeBytes(byte[] bytes, OutputStream outStream) throws IOException{ outStream.write(bytes); outStream.flush(); }
3. 流過濾器
Java中的流過濾器(FilterInputStream 和 FilterOutputStream)可用於增強流的數據讀取和寫入功能。
三、流的示例代碼
1. 從文件讀取數據並將它們寫入到另一個文件
public static void copyFile(File sourceFile, File destFile) throws IOException { InputStream in = new FileInputStream(sourceFile); OutputStream out = new FileOutputStream(destFile); byte[] buffer = new byte[1024]; int length; while ((length = in.read(buffer)) > 0) { out.write(buffer, 0, length); } in.close(); out.close(); }
2. 從控制台讀取數據
import java.io.*; public class ReadFromConsole { public static void main(String[] args) { InputStreamReader in = new InputStreamReader(System.in); BufferedReader reader = new BufferedReader(in); try { System.out.println("Enter some text:"); String text = reader.readLine(); System.out.println("The text you entered is: " + text); } catch(IOException e) { e.printStackTrace(); } } }
3. 寫入數據到文件
public class WriteToFile { public static void main(String[] args) { try { FileWriter fWriter = new FileWriter("myFile.txt"); fWriter.write("Hello, world!"); fWriter.close(); } catch(IOException e) { e.printStackTrace(); } } }
Java流在處理I/O方面提供了很多便利的方式。它們可以被用於處理各種不同類型的數據源,從磁盤上的文件到網絡連接。在許多不同的應用程序中,流都是至關重要的組成部分。
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-hant/n/219666.html