1、什么是IO流?
流是一組有順序的,有起點(diǎn)和終點(diǎn)的字節(jié)集合,是對(duì)數(shù)據(jù)傳輸?shù)目偡Q或抽象。即數(shù)據(jù)在兩設(shè)備間的傳輸稱為流,流的本質(zhì)是數(shù)據(jù)傳輸,根據(jù)數(shù)據(jù)傳輸特性將流抽象為各種類,方便更直觀的進(jìn)行數(shù)據(jù)操作。
2、分類方式
- 按流的數(shù)據(jù)單位不同:字節(jié)流和字符流。
字節(jié)流是最基礎(chǔ)的,它能夠處理所有的數(shù)據(jù)類型,包括圖片和avi等,而字符流只能處理字符類型的數(shù)據(jù)。字符流是因?yàn)閿?shù)據(jù)編碼的不同,在字節(jié)流的基礎(chǔ)上查了指定的編碼。所以,只要是處理純文本數(shù)據(jù),就優(yōu)先考慮使用字符流。除此之外都使用字節(jié)流。 - 按流的方向:輸入流和輸出流。
輸入流就是從外部輸入到計(jì)算機(jī)中,輸出流是從計(jì)算機(jī)里面輸出到外部。 - 按流的功能不同:節(jié)點(diǎn)流和處理流。
節(jié)點(diǎn)流是沒有處理過的流,處理流是在節(jié)點(diǎn)流的基礎(chǔ)上進(jìn)行加工過的流。
3、主要的抽象類
根據(jù)流最基本的方向是輸入和輸出流,根據(jù)字符流和字節(jié)流組合輸入輸出流可以獲得四個(gè)主要的抽象類,他們分別是,字符流中的輸入流Reader,字符流中的輸出流Writer,字節(jié)流中的輸入流InputStream,字節(jié)流中的輸出流OutputStream。
4、使用
image.png
首先看一張很常見的圖,關(guān)于IO流的類基本在上面展示。
既然字符流是在字節(jié)流基礎(chǔ)上,那么我們先來了解下字節(jié)流 的應(yīng)用。
在這之前我們來了解些java中的File類。可以用
File file = new File(String pathName);
將給定路徑名字符串轉(zhuǎn)換為抽象路徑名來創(chuàng)建一個(gè)新 File 實(shí)例。我們的輸入和輸出和這個(gè)文件進(jìn)行交互。
- 字節(jié)流輸入