java字符的输入流_Java:字节流和字符流(输入流和输出流)
InputStream是抽象基類,所以它不可以創建對象,但它可以用來“接口化編程”,因為大部分子類的函數基類都有定義,所以利用基類來調用函數。
FileInputStream是用來讀文件數據的流,所以它需要一個文件對象用來實例化,這個文件可以是一個File對象,也可以是文件名路徑字符串.【這里文件不存在會拋錯】
BufferedInputStream是一種封裝別的流以提高效率的流,所以它的初始化需要一個的InputStream流對象。
字節輸出流:
常用的字節輸出流主要有:
OutputStream
FileOutputStream
BufferedOutputStream 【BufferedOutputStream不是OutputStream的直接實現子類,是FilterOutputStream的子類】
他們的區別與用途:
OutputStream是字節輸出流的基類, OutputStream作為基類,給它的基類定義了幾個通用的函數:
write(byte[] b):將b的長度個字節數據寫到輸出流中。
write(byte[] b,int off,int len):從b的off位置開始,獲取len個字節數據,寫到輸出流中。
flush():刷新輸出流,把數據馬上寫到輸出流中。
close():關閉流,釋放系統資源。
FileOutputStream是用于寫文件的輸出流,它除了可以使用基類定義的函數外,還實現了OutputStream的抽象函數write(int b):
write(int b):將b轉成一個字節數據,寫到輸出流中。
BufferedOutputStream像上面那個BufferedInputStream一樣,都可以提高效率。它除了可以使用基類定義的函數外,它還實現了OutputStream的抽象函數write(int b):
write(int b):將b轉成一個字節數據,寫到輸出流中。
使用:
OutputStream是抽象基類,所以它不能實例化,但它可以用于接口化編程。
FileOutputStream是用于寫文件的輸出流,所以它需要一個文件作為實例化參數,這個文件可以是File對象,也可以是文件路徑字符串。【如果文件不存在,那么將自動創建。】【FileOutputStream實例化時可以給第二個參數,第二個參數是是否使用追加寫入默認,為true時代表在原有文件內容后面追加寫入數據,默認為false】
BufferedOutputStream需要一個輸出流作為實例化參數。
補充:
上面的一些函數,考慮到效率問題,上面的子類可能會重寫基類的函數,但功能基本是不變的。
更多關于字節流的函數與用法可以參考jdk文檔。
字符流
字符流的類通常以reader和writer結尾
字符輸入流:
常見的字符輸入流有:
Reader
InputStreamReader
FileReader
BufferedReader
他們的區別與用途:
Reader是字符輸入流的抽象基類 ,它定義了以下幾個函數:
read() :讀取單個字符,返回結果是一個int,需要轉成char;到達流的末尾時,返回-1
read(char[] cbuf):讀取cbuf的長度個字符到cbuf這種,返回結果是讀取的字符數,到達流的末尾時,返回-1
close()? :關閉流,釋放占用的系統資源。
InputStreamReader 可以把InputStream中的字節數據流根據字符編碼方式轉成字符數據流。它除了可以使用基類定義的函數,它自己還實現了以下函數:
read(char[] cbuf, int offset, int length) :從offset位置開始,讀取length個字符到cbuf中,返回結果是實際讀取的字符數,到達流的末尾時,返回-1
FileReader 可以把FileInputStream中的字節數據轉成根據字符編碼方式轉成字符數據流。
BufferedReader可以把字符輸入流進行封裝,將數據進行緩沖,提高讀取效率。它除了可以使用基類定義的函數,它自己還實現了以下函數:
read(char[] cbuf, int offset, int length) :從offset位置開始,讀取length個字符到cbuf中,返回結果是實際讀取的字符數,到達流的末尾時,返回-1
readLine() :讀取一個文本行,以行結束符作為末尾,返回結果是讀取的字符串。如果已到達流末尾,則返回 null
使用
Reader 是一個抽象基類,不能實例化,但可以用于接口化編程。
InputStreamReader需要一個字節輸入流對象作為實例化參數。還可以指定第二個參數,第二個參數是字符編碼方式,可以是編碼方式的字符串形式,也可以是一個字符集對象。
FileReader 需要一個文件對象作為實例化參數,可以是File類對象,也可以是文件的路徑字符串。
BufferReader需要一個字符輸入流對象作為實例化參數。
字符輸出流:
常見的字符輸出流有:
Writer
OutputStreamWriter
FileWriter
BufferedWriter
他們的區別與用途:
Writer是字符輸出流的抽象基類, ,它定義了以下幾個函數
write(char[] cbuf) :往輸出流寫入一個字符數組。
write(int c) :往輸出流寫入一個字符。
write(String str) :往輸出流寫入一串字符串。
write(String str, int off, int len) :往輸出流寫入字符串的一部分。
close() :關閉流,釋放資源。 【這個還是抽象的,寫出來是說明有這個關閉功能】
flush():刷新輸出流,把數據馬上寫到輸出流中。 【這個還是抽象的,寫出來是說明有這個關閉功能】
OutputStreamWriter可以使我們直接往流中寫字符串數據,它里面會幫我們根據字符編碼方式來把字符數據轉成字節數據再寫給輸出流,它相當于一個中介\橋梁。
FileWriter與OutputStreamWriter功能類似,我們可以直接往流中寫字符串數據,FileWriter內部會根據字符編碼方式來把字符數據轉成字節數據再寫給輸出流。
BufferedWriter比FileWriter還高級一點,它利用了緩沖區來提高寫的效率。它還多出了一個函數:
newLine() :寫入一個換行符。
使用
Writer 是一個抽象基類,不能實例化,但可以用于接口化編程。
OutputStreamWriter 需要一個輸入流對象作為實例化參數。
FileWriter 需要一個文件對象來實例化,可以是File類對象,也可以是文件的路徑字符串。
BufferWriter
總結
以上是生活随笔為你收集整理的java字符的输入流_Java:字节流和字符流(输入流和输出流)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: php api命名历史,PHP历史上的今
- 下一篇: java计算加速减速_Javascrip