Java IO(Input/Output)是Java中用來處理輸入/輸出的一套API,它可以幫助我們完成文件讀寫、網路傳輸等操作。學習 Java I/O 是 Java 開發者的必修課程。在本篇文章中我們將介紹基礎的 Java IO 知識,並通過代碼示例來演示它們的使用。
一、Java IO 的基本概念
Java 的 IO 流通常被分為兩個大類:位元組流和字元流。位元組流和字元流的區別在於它們處理的數據單位不同。位元組流以位元組為單位進行讀寫操作,而字元流則以字元為單位進行讀寫操作。
Java IO 里最基本的類是java.io中的 InputStream 和 OutputStream。InputStream 和 OutputStream 是所有位元組流的父類,提供了最基本的讀寫方法。
除了 InputStream 和 OutputStream,Java 還提供了字元流,其基本類是java.io中的 Reader 和 Writer。
二、Java IO 流的分類
Java IO 流分為四大類:位元組輸入流、位元組輸出流、字元輸入流和字元輸出流。四個類都是抽象類,不能直接使用。要實現讀寫操作需藉助其子類類。
1. 位元組輸入流
位元組輸入流可以從文件或者其它數據源中讀取位元組數據,最基本的位元組輸入流是 InputStream。
try(InputStream inputStream = new FileInputStream("example.txt")) { int data = inputStream.read(); while(data != -1) { System.out.println(data); data inputStream.read(); } } catch(IOException e) { e.printStackTrace(); }
以上代碼中,首先通過FileInputStream打開文件example.txt,然後通過read()方法一次一個位元組地讀取文件內容。當read()方法返回-1時,表示文件已經讀取完畢,循環結束。
2. 位元組輸出流
位元組輸出流將數據以位元組的方式寫入文件或其它輸出目的地中,最基本的位元組輸出流是 OutStream。
try(OutputStream outputStream = new FileOutputStream("example.txt")) { byte[] data = "Hello World".getBytes(); outputStream.write(data); } catch(IOException e) { e.printStackTrace(); }
以上代碼首先通過FileOutStream打開文件 example.txt,然後將「Hello World」轉換為位元組數組,並使用write()方法將它們寫入文件中。
3. 字元輸入流
Java 中的字元流比較常用,最基本的字元輸入流是 Reader。
try(Reader reader = new FileReader("example.txt")) { int data = reader.read(); while(data != -1) { System.out.printf("%c", data); data = reader.read(); } } catch(IOException e) { e.printStackTrace(); }
以上代碼中,首先使用FileReader打開文件 example.txt,然後通過read()方法一次一個字元地讀取文件內容。當read()方法返回-1時,表示文件已經讀取完畢,循環結束。
4. 字元輸出流
Java 中的字元輸出流也比較常用,最基本的字元輸出流是 Writer。
try(Writer writer = new FileWriter("example.txt")) { String data = "Hello World"; writer.write(data); } catch(IOException e) { e.printStackTrace(); }
以上代碼首先通過FileWrite打開文件 example.txt,然後將「Hello World」寫入文件中。
三、Java IO 流的操作
Java IO 流提供了各種不同的方法,可以通過它們實現不同的IO讀寫操作。
1. 文件操作
Java 的File類提供了訪問文件系統的方法,可以對文件和目錄進行訪問和操作。
File file = new File("example.txt"); if(file.exists()) { System.out.println("文件存在"); } else { System.out.println("文件不存在"); }
以上代碼使用Java內置的File對象來檢查文件是否存在。如果文件存在,則輸出「文件存在」,否則輸出「文件不存在」。
2. 緩存操作
緩存操作可以提高IO讀寫效率。Java IO 中的緩存類有BufferedReader、BufferedWriter、ByteArrayInputStream等。其中,Java 8 中已經提供了NIO類庫,NIO類庫相比IO類庫有更高的效率和更強的擴展性。
try(BufferedReader reader = new BufferedReader(new FileReader("example.txt"))) { String data = null; while((data = reader.readLine()) != null) { System.out.println(data); } } catch(IOException e) { e.printStackTrace(); }
以上代碼中,首先使用BufferedReader類對FileReader類進行了包裝,生成了一個字元輸入流。然後通過readLine()方法逐行讀取了文件內容,並輸出到控制台上。
3. 位元組流操作
位元組流操作可以對位元組進行操作。Java IO中的位元組流有ByteArrayInputStream、ByteArrayOutputStream、FileInputStream等。
try(FileInputStream inputStream = new FileInputStream("example.txt")) { byte[] data = new byte[1024]; int len = 0; while((len = inputStream.read(data)) != -1) { System.out.println(new String(data, 0, len)); } } catch(IOException e) { e.printStackTrace(); }
以上代碼首先通過FileInputStream類對文件進行讀取操作。然後使用read()方法逐個讀取文件內容,數據被緩存到 data 數組中。最後將讀取到的數據以字元串方式輸出到控制台上。
4. 字元流操作
字元流操作可以對字元進行操作,常用的字元流有FileReader、FileWriter等。
try(FileReader reader = new FileReader("example.txt")) { char[] data = new char[1024]; int len = 0; while((len = reader.read(data)) != -1) { System.out.println(new String(data, 0, len)); } } catch(IOException e) { e.printStackTrace(); }
以上代碼首先通過FileReader類對文件進行讀取操作。然後使用read()方法逐個讀取文件內容,數據被緩存到 data 數組中。最後將讀取到的數據以字元串方式輸出到控制台上。
四、總結
本文從Java IO 的基本概念、分類、操作等多個方面詳細講解了Java IO的基礎知識,並通過代碼示例展示了它們的具體使用。希望本文能夠幫助讀者了解Java IO,並更好地運用Java IO來完成自己的項目。
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/303136.html