字節(jié)流類
InputStream與OutputStream
兩者分別是字節(jié)輸入流和字節(jié)輸出流的基類寥闪。
InputStream主要完成了read()方法和read(byte[])方法疲憋。
- read()方法
返回從InputStream流內(nèi)讀取到的一個字節(jié)內(nèi)容梁只,如:
int data = inputstream.read();
- read(byte[])方法
此方法會去一下子讀取給定字節(jié)容量的字節(jié),且返回已經(jīng)讀取過的字節(jié)數(shù)
OutputStream主要完成了write(int)方法和write(byte[])方法
- write(int)方法
其實(shí)只寫入低8位秋忙,其余24位舍棄构舟。 - writ(byte[])方法
傳入byte數(shù)組,將字節(jié)數(shù)組中所有數(shù)據(jù)寫入到輸出流监嗜。
FileInputStream與FileOutputStream
FileInputStream可以用文件路徑也可以用文件對象作為構(gòu)造函數(shù)的參數(shù)抡谐,如:
InputStream input = new FileInputStream("c:\\data\\input-text.txt");
File file = new File("c:\\data\\input-text.txt");
InputStream input = new FileInputStream(file);
其read方法與其父類類似,也是一個字節(jié)一個字節(jié)讀取刽肠。
FileOutputStream
- write(int)方法
寫入某個字節(jié) - write(byte[])方法
寫入某個字節(jié)數(shù)組 - 構(gòu)造方法
OutputStream output = new FileOutputStream("c:\\data\\output-text.txt", true);
true追加免胃,false覆蓋半抱。
- flush()方法
寫入數(shù)據(jù)刷新到磁盤中。
ByteArrayInputStream與ByteArrayOutputStream
ByteArrayInputStream
- 普通read()方法
與父類類似扼雏,進(jìn)行一般的讀取夯膀。 - read(byte b[], int off, int len)方法
讀取字節(jié)數(shù)組苍蔬,返回讀取的總字節(jié)數(shù)。
ByteArrayOutputStream
- write(int)方法
寫入普通一個字節(jié)俺猿。
-write(byte[] b,int off,int len)方法
寫入字節(jié)數(shù)組中選中長度格仲。 - toByteArray()方法
獲取輸出流中的數(shù)據(jù)。
BufferedInputStream與BufferedOutputStream
BufferedInputStream
它為輸入流提供緩沖區(qū)谊惭,提高磁盤IO速度否过,用法:
InputStream input = new BufferedInputStream(new FileInputStream("c:\\data\\input-file.txt"), 8 * 1024);
這樣一次可以讀取磁盤中大塊內(nèi)容,減少磁盤IO的次數(shù)药磺。
其他方法與InputStream相同煤伟。
BufferedOutputStream
用法類似:
OutputStream output = new BufferedOutputStream(new FileOutputStream("c:\\data\\output-file.txt"), 8 * 1024);
其他方法與OutputStream相同,需要flush方法刷新入磁盤围辙。
字符流類
Reader和Writer
一般都用它們的子類放案,一個用于讀取文本,一個用于寫入文本掸冤,都以字符為單位友雳。
InputStreamReader和OutputStreamWriter
這兩個類可以把字節(jié)流轉(zhuǎn)換成字符流。
InputStreamReader
通過包含一個InputStream饺藤,將輸入字節(jié)流轉(zhuǎn)換成字符流,如下:
InputStream inputStream = new FileInputStream("c:\\data\\input.txt");
Reader reader = new InputStreamReader(inputStream);
- read()
讀取單個字符 - read(char [])
讀取的字符存入字符數(shù)組中罗丰,返回讀取到的字符數(shù)咽袜。
OutputStreamWriter
它包含一個OutputStream枕稀,將輸出字節(jié)流編程字符流,如下:
Writer writer = new OutputStreamWriter(outputStream);
writer.write("Hello World");
這樣可以直接將字符寫入凹联。
- write(int)
將單個字符寫入 - viod write(String str,int off,int len)
寫入字符串中部分字符 - void write(char[] cbuf, int off, int len)
寫入字符數(shù)組中部分字符
FileReader和FileWriter
FileReader
- read()
直接讀取單個字符哆档,并返回讀取到內(nèi)容的int變量
FileWriter
- write(int/String)
寫入某個字符或者字符串
BufferedReader和BufferedWriter
這兩個類與BufferedInputStream和BufferedOutputStream類似,為字符輸入輸出流提供緩沖澳淑。
用法如下:
Reader input = new BufferedReader(new FileReader("c:\\data\\input-file.txt"), 8 * 1024);
Writer writer = new BufferedWriter(new FileWriter("c:\\data\\output-file.txt"), 8 * 1024);
BufferedReader有readline()方法可以一次性讀取一行文本插佛。
但BufferedWriter需要newline()之后才能write()文本。
CharArrayReader和CharArrayWriter
CharArrayReader將字符數(shù)組轉(zhuǎn)換成字符流然后進(jìn)行讀取氢拥。
CharArrayWriter其實(shí)是將字符或者字符串寫入到CharArrayWriter對象中锨侯,然后可以進(jìn)行toCharArray()獲取。