1.InputStream
InputStream是一個(gè)抽象類(lèi)吼拥,是所有字節(jié)輸入流類(lèi)的基類(lèi)臂聋,完成字節(jié)從流中讀出事镣。所有的子類(lèi)必須實(shí)現(xiàn)一個(gè)一個(gè)方法,即read()方法古劲,也以為著所有的字節(jié)輸入類(lèi)都可以實(shí)現(xiàn)單字節(jié)的輸入斥赋。
public abstract int read( ) throws IOException
從當(dāng)前輸入流中讀取數(shù)據(jù)的下一個(gè)字節(jié)。返回的字節(jié)值是在 0 到 255 范圍內(nèi)的一個(gè) int數(shù)产艾。如果已讀到流的末尾 , 沒(méi)有再可讀的字節(jié)時(shí) , 則返回 -1疤剑。該方法將一直阻塞 , 直到有輸入數(shù)據(jù)滑绒、檢測(cè)到了數(shù)據(jù)流尾或拋出異常。如果遇到輸入流的結(jié)尾, 則返回 -1隘膘。如果發(fā)生某個(gè)I/O 錯(cuò)誤 , 則拋出 IOException 異常疑故。
public int read(byte[ ] b) throws IOException
從輸入流中讀取若干個(gè)字節(jié) , 把它們保存到參數(shù) b 指定的字節(jié)數(shù)組中。返回的整數(shù)表示讀取的字節(jié)數(shù)弯菊。如果遇到輸入流的結(jié)尾, 則返回 -1纵势。如果發(fā)生某個(gè) I/O 錯(cuò)誤 , 則拋出IOException 異常。
public int read(byte[ ] b,int off,int len) throws IOException
從輸入流中讀取若干個(gè)字節(jié) , 把它們保存到參數(shù) b 指定的字節(jié)數(shù)組中管钳。參數(shù) off 指定在字節(jié)數(shù)組中開(kāi)始保存數(shù)據(jù)的起始下標(biāo), 參數(shù) len 指定讀取的字節(jié)數(shù)目钦铁。返回的整數(shù)表示實(shí)際讀取的字節(jié)數(shù)。如果遇到輸入的結(jié)尾, 則返回 -1才漆。如果發(fā)生某個(gè) I/O 錯(cuò)誤 , 則拋出IOException 異常牛曹。
public void close( ) throws IOException
關(guān)閉當(dāng)前輸入流 , 并釋放與它相關(guān)的系統(tǒng)資源。 InputStream 的 close() 方法不做任何事醇滥。如果發(fā)生某個(gè)I/O 錯(cuò)誤 , 則拋出 IOException 異常躏仇。
public int available( ) throws IOException
返回可以從輸入流中讀取的字節(jié)數(shù)目。如果發(fā)生某個(gè) I/O 錯(cuò)誤 , 則拋出 IOException異常腺办。
2.OutputStream
一個(gè)抽象類(lèi) , 是所有字節(jié)輸出流類(lèi)的基類(lèi) , 完成將字節(jié)寫(xiě)入到流中焰手。它的派生類(lèi)必須實(shí)現(xiàn)輸出的下一個(gè)字節(jié)的辦法, 即 write() 方法 , 也就意味著所有的字節(jié)輸出流類(lèi)都能完成單字節(jié)的輸入。
重要方法:
public abstract void write(int b) throws IOException
將指定字節(jié)寫(xiě)入當(dāng)前輸入流怀喉。 OutputStream 的子類(lèi)必須提供此方法的一個(gè)實(shí)現(xiàn)书妻。如果發(fā)生某個(gè)I/O 錯(cuò)誤 , 則拋出 IOException 異常。
public void write(byte[ ] b) throws IOException
把參數(shù) b 指定的字節(jié)數(shù)組中的所有字節(jié)寫(xiě)到輸出流躬拢。如果發(fā)生某個(gè) I/O 錯(cuò)誤 , 則拋出IOException 異常躲履。
public void write(byte[ ] b,int off,int len) throws IOException
把參數(shù) b 指定的字節(jié)數(shù)組中的若干字節(jié)寫(xiě)到輸出流 , 參數(shù) off 指定字節(jié)數(shù)組的起始下標(biāo) ,從這個(gè)位置開(kāi)始輸出由參數(shù) len 指定數(shù)目的字節(jié)。如果發(fā)生某個(gè) I/O 錯(cuò)誤 , 則拋出 IOException 異常聊闯。
public void flush( ) throws IOException
刷新當(dāng)前輸出流 , 將任何緩沖輸出的字節(jié)輸出到此流中工猜。 OutputStream 的 flush() 方法不做任何事。它的一些帶有緩沖區(qū)的子類(lèi)覆蓋了flush() 方法菱蔬。通過(guò)帶緩沖區(qū)的輸出流寫(xiě)數(shù)據(jù)時(shí), 數(shù)據(jù)先保存在緩沖區(qū)中 , 積累到一定程度才會(huì)真正寫(xiě)到輸出流中篷帅。緩沖區(qū)通常用字節(jié)數(shù)組實(shí)現(xiàn), 實(shí)際上是指一塊內(nèi)存空間。 flush() 方法強(qiáng)制把緩沖區(qū)內(nèi)的數(shù)據(jù)寫(xiě)到輸出流中拴泌。如果發(fā)生某個(gè)I/O 錯(cuò)誤 , 則拋出 IOException 異常魏身。
public void close( ) throws IOException
關(guān)閉當(dāng)前輸出流 , 且釋放與它相關(guān)的任一系統(tǒng)資源。 OutputStream 的 close() 方法不做任何事蚪腐。如果發(fā)生某個(gè)I/O 錯(cuò)誤 , 則拋出 IOException 異常箭昵。
3.FileInputStream
InputStream 的派生類(lèi) , 完成從文件中讀取字節(jié)數(shù)據(jù)。其基本步驟是:
*?建立文件輸入流回季;
*?讀入字節(jié)數(shù)據(jù)家制;
*?關(guān)閉正林。
重要方法:
public FileinputStream(String name) throws FileNotFoundException
創(chuàng)建一個(gè)輸入文件流 , 從 name 指定名稱(chēng)的文件讀取數(shù)據(jù)。 name 中包含了文件路徑信息颤殴。如果找不到指定文件, 則拋出 FileNotFoundException 異常觅廓。
public FileinputStream(File file) throws FileNotFoundException
創(chuàng)建一個(gè)輸入文件流 , 從指定的 File 對(duì)象讀取數(shù)據(jù)。
import java.io.File;
import java.io.FileInputStream;
public class FileInputStreamTest {
public static void main(String[] args) {
String s="";
int i;
try{
//建立起文件輸入流 , 注意 \\ 為對(duì) \ 的轉(zhuǎn)義
FileInputStream in=new FileInputStream("c:\\demo.txt");
//利用循環(huán)依次讀取文件中的所有字節(jié)
while((i=in.read())!=-1){
//強(qiáng)制將字節(jié)轉(zhuǎn)換成字符
s=s+(char)i;
}
}catch(Exception e){
s="文件未找到 ";
}
System.out.println(s);
}
}
如果文件很大 , 為了提高讀文件的效率 , 可以利用 read(byte[ ] buff) 方法 , 它能減少物理讀文件的次數(shù)诅病。