流是Java I/O的核心部分,Java程序通過輸入流向程序中輸入數據,通過輸出流將程序中的數據輸出到外部。
Java 輸入流用于從外部資源中讀取數據到程序中。Java 提供了多種輸入流類,包含在 java.io 包中。其中一些主要的輸入流類包括:FileInputStream、DataInputStream、BufferedInputStream、ObjectInputStream 等。輸入流提供了多種讀取字節、字符和行的方法。例如,讀取字節可以使用 read() 方法,讀取字符可以使用 InputStreamReader 編寫的 read() 方法。
InputStream inStream = new FileInputStream("myfile.txt"); int size = inStream.available(); for (int i = 0; i< size; i++) { System.out.print((char) inStream.read() + " "); } inStream.close();
Java 輸出流用于將程序中的數據寫入外部資源。Java 提供了多種輸出流類,包含在 java.io 包中。其中一些主要的輸出流類包括:FileOutputStream、DataOutputStream、BufferedOutputStream、ObjectOutputStream 等。輸出流同樣提供了多種寫入字節、字符和行的方法。例如,寫入字節可以使用 write() 方法,寫入字符可以使用 OutputStreamWriter 編寫的 write() 方法。
OutputStream outStream = new FileOutputStream("myfile.txt"); String message = "Hello World!"; byte[] messageBytes = message.getBytes(); outStream.write(messageBytes); outStream.close();
無論是輸入流還是輸出流,使用之后都必須關閉以釋放底層資源。Java 的 try-with-resources 可以讓代碼更加簡潔易讀:
try (InputStream inStream = new FileInputStream("myfile.txt"); OutputStream outStream = new FileOutputStream("newfile.txt")) { byte[] buffer = new byte[1024]; int length; while ((length = inStream.read(buffer)) >0) { outStream.write(buffer, 0, length); } } catch (IOException e) { e.printStackTrace(); }
在使用Java輸入流和輸出流時,需要特別注意異常處理。Java I/O通常可以拋出多個異常,包括 IOException (輸入輸出錯誤)、FileNotFoundException(文件未找到異常)等等。為了讓代碼邏輯更加健壯,需要針對這些異常進行適當的處理。
除了上述內容外,Java輸入流和輸出流還涉及到一些高級操作,如數據流的序列化、緩沖操作等等。若想在Java程序中更高效地進行輸入輸出,需要深入了解輸入輸出流的知識點。