Java是一種面向?qū)ο蟮木幊陶Z(yǔ)言,它廣泛應(yīng)用于各種領(lǐng)域。在Java中,IO流是一項(xiàng)重要的功能,能夠讓程序能夠讀寫(xiě)外部文件或者網(wǎng)絡(luò)流。Java中的IO流分為節(jié)點(diǎn)流和處理流兩種,下面我們?cè)敿?xì)講解一下。
1. 節(jié)點(diǎn)流
節(jié)點(diǎn)流是基本的I/O接口,也叫做低級(jí)流。它們提供了對(duì)物理節(jié)點(diǎn)設(shè)備的訪(fǎng)問(wèn)能力,如文件、網(wǎng)絡(luò)和內(nèi)存等。
FileInputStream fis = null; try { fis = new FileInputStream("example.txt"); int data = fis.read(); while (data != -1) { System.out.print((char) data); data = fis.read(); } } catch (IOException e) { System.out.println("文件讀取失敗" + e.getMessage()); } finally { if (fis != null) { try { fis.close(); } catch (IOException e) { e.printStackTrace(); } } }
這段代碼使用了FileInputStream來(lái)讀取同級(jí)目錄下的example.txt文件,通過(guò)read()方法讀取并打印出文件中的數(shù)據(jù)。注意,在讀取文件時(shí)需要捕獲IOException異常并確保關(guān)閉流資源。
2. 處理流
處理流是對(duì)節(jié)點(diǎn)流的封裝,也叫做高級(jí)流。它們?cè)鰪?qiáng)了I/O操作的功能和性能,常用的如Buffered等。
BufferedReader br = null; try { br = new BufferedReader(new FileReader("example.txt")); String line; while ((line = br.readLine()) != null) { System.out.println(line); } } catch (IOException e) { System.out.println("文件讀取失敗" + e.getMessage()); } finally { if (br != null) { try { br.close(); } catch (IOException e) { e.printStackTrace(); } } }
這段代碼使用了BufferedReader處理流來(lái)讀取文件,相較于節(jié)點(diǎn)流需要一個(gè)個(gè)字節(jié)讀取,BufferedReader可以按照行讀取,提高了效率。同樣地,我們需要確保關(guān)流操作。
總的來(lái)說(shuō),Java中的節(jié)點(diǎn)流和處理流各有優(yōu)缺點(diǎn),節(jié)點(diǎn)流提供了最基礎(chǔ)的IO操作,而處理流可以對(duì)節(jié)點(diǎn)流進(jìn)行增強(qiáng)和改進(jìn)。程序員根據(jù)不同的需求選擇合適的流來(lái)進(jìn)行IO操作,能夠有效提高程序的性能和效率。