亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 學院 > 開發設計 > 正文

InputStreamReader 和FileReader的區別及InputStream和Reader的區別

2019-11-10 18:58:44
字體:
來源:轉載
供稿:網友

首先給大家介紹InputStreamReader 和FileReader的區別,具體內容如下所示:

InputStreamReader 和 BufferedReader 。其中最重要的類是 InputStreamReader ,它是字節轉換為字符的橋梁。 你可以在構造器重指定編碼的方式,如果不指定的話將采用底層操作系統的默認編碼方式,例如 GBK 等。

FileReader 與 InputStreamReader 涉及編碼轉換 ( 指定編碼方式或者采用 os 默認編碼 ) ,可能在不同的平臺上出現亂碼現象!而 FileInputStream 以二進制方式處理,不會出現亂碼現象 .

FileInputStream字節流是 以一個一個字節來讀。

FileReader字符流是 以一個一個字符來讀取的。

?
BufferedReader bufReader = null;InputStreamReader isr =null;FileReader fr = null;try{for(String fileName:fileNames){  方法一:  isr = newInputStreamReader(newFileInputStream("D:/test.txt"),"utf-8");  bufReader = newBufferedReader(isr);  方法二:  fr = newFileReader("D:/test.txt");  bufReader = newBufferedReader(fr);  while(bufReader.ready()) {   // 1. 得到每一行數據    String dataLine = bufReader.readLine();   }}

InputStream和Reader的區別

java.io下面有兩個抽象類:InputStream和Reader

InputStream是表示字節輸入流的所有類的超類

Reader是用于讀取字符流的抽象類

InputStream提供的是字節流的讀取,而非文本讀取,這是和Reader類的根本區別。

即用Reader讀取出來的是char數組或者String ,使用InputStream讀取出來的是byte數組。

弄清了兩個超類的根本區別,再來看他們底下子類的使用,這里只對最常用的幾個說明

InputStream    | __FileInputStream

FileInputStream 從文件系統中的某個文件中獲得輸入字節。

構造方法摘要 

FileInputStream (File  file) 

          通過打開一個到實際文件的連接來創建一個 FileInputStream ,該文件通過文件系統中的 File 對象 file 指定。 

FileInputStream (FileDescriptor  fdObj)

          通過使用文件描述符 fdObj 創建一個 FileInputStream ,該文件描述符表示到文件系統中某個實際文件的現有連接。 

FileInputStream (String  name) 

          通過打開一個到實際文件的連接來創建一個 FileInputStream ,該文件通過文件系統中的路徑名 name 指定。 

Reader

   |——BufferedReader    |___InputStreamReader          |__FileReader

BufferedReader : 從字符輸入流中讀取文本,緩沖各個字符,從而實現字符、數組和行的高效讀取。

構造方法摘要 

BufferedReader (Reader  in)

          創建一個使用默認大小輸入緩沖區的緩沖字符輸入流。

BufferedReader (Reader  in, int sz)

          創建一個使用指定大小輸入緩沖區的緩沖字符輸入流。

BufferedReader (Java Platform SE 6)

BufferedReader的最大特點就是緩沖區的設置。通常Reader 所作的每個讀取請求都會導致對底層字符或字節流進行相應的讀取請求,如果沒有緩沖,則每次調用 read() 或 readLine() 都會導致從文件中讀取字節,并將其轉換為字符后返回,而這是極其低效的。

使用BufferedReader可以指定緩沖區的大小,或者可使用默認的大小。大多數情況下,默認值就足夠大了。

因此,建議用 BufferedReader 包裝所有其 read() 操作可能開銷很高的 Reader(如 FileReader 和InputStreamReader)。

例如,

?
BufferedReader in =newBufferedReader(newFileReader("foo.in"));

 將緩沖指定文件的輸入。

?
InputStreamReader (Java Platform SE 6)

InputStreamReader 是字節流通向字符流的橋梁:它使用指定的 charset 讀取字節并將其解碼為字符。它使用的字符集可以由名稱指定或顯式給定,或者可以接受平臺默認的字符集。 

構造方法摘要 

?
InputStreamReader (InputStream in)      創建一個使用默認字符集的 InputStreamReader。 InputStreamReader (InputStream in, Charset cs)      創建使用給定字符集的 InputStreamReader。 InputStreamReader (InputStream in, CharsetDecoder dec)      創建使用給定字符集解碼器的 InputStreamReader。 InputStreamReader (InputStream in, String charsetName)      創建使用指定字符集的 InputStreamReader。

每次調用 InputStreamReader 中的一個 read() 方法都會導致從底層輸入流讀取一個或多個字節。要啟用從字節到字符的有效轉換,可以提前從底層流讀取更多的字節,使其超過滿足當前讀取操作所需的字節。

為了達到最高效率,可要考慮在 BufferedReader 內包裝 InputStreamReader。例如:

?
BufferedReader in = newBufferedReader(newInputStreamReader(System.in))

InputStreamReader最大的特點是可以指轉換的定編碼格式,這是其他類所不能的,從構造方法就可看出,這一點在讀取中文字符時非常有用

FileReader

1)FileReader類介紹:

InputStreamReader類的子類,所有方法(read()等)都從父類InputStreamReader中繼承而來;

2)與InputStreamReader類的區別:

構造方法摘要 

FileReader (File  file) 

          在給定從中讀取數據的 File 的情況下創建一個新 FileReader 。 

FileReader (FileDescriptor  fd) 

         在給定從中讀取數據的 FileDescriptor 的情況下創建一個新 FileReader 。 

FileReader (String  fileName) 

          在給定從中讀取數據的文件名的情況下創建一個新 FileReader 

該類與它的父類InputStreamReader的主要不同在于構造函數,主要區別也就在于構造函數!

從InputStreamReader的構造函數中看到,參數為InputStream和編碼方式,可以看出,當要指定編碼方式時,必須使用InputStreamReader類;而FileReader構造函數的參數與FileInputStream相同,為File對象或表示path的String,可以看出,當要根據File對象或者String讀取一個文件時,用FileReader;

我想FileReader子類的作用也就在于這個小分工吧。該類與它的父類InputStreamReader的主要不同在于構造函數,主要區別也就在于構造函數!

二 聯系與區別

(1)字符與字節:

FileInputStream 類以二進制輸入/輸出,I/O速度快且效率搞,但是它的read()方法讀到的是一個字節(二進制數據),很不利于人們閱讀,而且無法直接對文件中的字符進行操作,比如替換,查找(必須以字節形式操作);

而Reader類彌補了這個缺陷,可以以文本格式輸入/輸出,非常方便;比如可以使用while((ch = filereader.read())!=-1 )循環來讀取文件;可以使用BufferedReader的readLine()方法一行一行的讀取文本。

(2)編碼

InputStreamReader ,它是字節轉換為字符的橋梁。 你可以在構造器重指定編碼的方式,如果不指定的話將采用底層操作系統的默認編碼方式,例如GBK等。 

FileReader與InputStreamReader 涉及編碼轉換(指定編碼方式或者采用os默認編碼),可能在不同的平臺上出現亂碼現象!而FileInputStream 以二進制方式處理,不會出現亂碼現象. 

因此要指定編碼方式時,必須使用InputStreamReader 類,所以說它是字節轉換為字符的橋梁;

(3) 緩存區

    BufferReader類用來包裝所有其 read() 操作可能開銷很高的 Reader(如 FileReader 和InputStreamReader)。

(4)規范用法

總結以上內容,得出比較好的規范用法:

1) File file = new File ("hello.txt");

?
FileInputStream in=newFileInputStream (file);

2) File file = new File ("hello.txt");

?
FileInputStream in=newFileInputStream (file); InputStreamReader inReader=newInputStreamReader (in,"UTF-8");BufferedReader bufReader=newBufferedReader(inReader);

3) File file = new File ("hello.txt");

?
FileReader fileReader=newFileReader(file); BufferedReader bufReader=newBufferedReader(fileReader);
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
亚洲色图在线观看| 亚洲国产精品yw在线观看| 日韩欧美aⅴ综合网站发布| 国模精品一区二区三区色天香| 中文字幕日韩在线播放| 日韩中文字幕国产精品| 亚洲天堂免费视频| 91免费视频国产| 久久久女女女女999久久| 欧美日韩第一页| 国产精品草莓在线免费观看| 1769国内精品视频在线播放| 97在线精品国自产拍中文| 欧美日韩爱爱视频| 亚洲精品一区在线观看香蕉| 久久免费福利视频| 激情成人中文字幕| 欧美一级片免费在线| 日韩欧美亚洲成人| 日韩中文在线观看| 国产亚洲一区精品| 久久影视电视剧免费网站| 高清欧美电影在线| 欧美午夜影院在线视频| 日韩免费观看视频| 日韩中文理论片| 日韩一区二区在线视频| 91免费看片在线| 亚洲电影免费观看高清完整版在线| 亚洲最大福利视频网| www国产亚洲精品久久网站| 色视频www在线播放国产成人| 久久久人成影片一区二区三区| 中文字幕少妇一区二区三区| 欧美日本亚洲视频| 色视频www在线播放国产成人| 亚洲欧美国产精品va在线观看| 国产一区在线播放| 91亚洲永久免费精品| 日韩中文字幕网站| 亚洲va男人天堂| 欧美成人精品在线播放| 欧美高清在线播放| 中文国产成人精品久久一| 91久久久久久久| 97超级碰在线看视频免费在线看| 日韩成人在线视频| 久久精品这里热有精品| 欧美性xxxxx极品| 日韩va亚洲va欧洲va国产| 欧美激情综合色| 国产亚洲欧洲在线| 午夜精品福利在线观看| 亚洲人成在线电影| 国产精品久久久久久久app| 国产精品2018| 久久综合久久美利坚合众国| 日韩大陆欧美高清视频区| 国产精品福利无圣光在线一区| 狠狠做深爱婷婷久久综合一区| 亚洲国产成人精品久久久国产成人一区| 亚洲欧洲国产一区| 成人午夜一级二级三级| 国产日产欧美a一级在线| 成人h视频在线观看播放| 国产成人精品一区二区三区| 欧美成人国产va精品日本一级| 欧美亚洲国产成人精品| 欧美疯狂xxxx大交乱88av| 性欧美亚洲xxxx乳在线观看| 亚洲电影在线看| 精品久久久久久久大神国产| 欧美一级黑人aaaaaaa做受| 91精品国产高清| 国产精品美女呻吟| 国产91色在线|免| 国产精品普通话| 中文字幕亚洲激情| 日韩女在线观看| 国产精品av在线| 久久天堂电影网| 欧美丰满少妇xxxxx| 日本精品视频在线| 亚洲国产美女久久久久| 日韩在线视频播放| 91人人爽人人爽人人精88v| 91经典在线视频| 538国产精品一区二区在线| 久久久久久香蕉网| 欧美性色视频在线| 国产精品视频网站| 久久人人爽人人爽人人片av高清| 最近中文字幕2019免费| 91九色视频导航| 成人h片在线播放免费网站| 97在线视频免费观看| 欧美性生活大片免费观看网址| 亚洲欧美制服另类日韩| 亚洲欧美中文另类| 亚洲一区二区三区久久| 亚洲欧美日韩国产中文专区| 最近2019中文免费高清视频观看www99| 精品偷拍一区二区三区在线看| 粗暴蹂躏中文一区二区三区| 亚洲a∨日韩av高清在线观看| 在线观看国产精品91| 久久久久久免费精品| 午夜精品在线视频| 国产91精品高潮白浆喷水| 久久中文久久字幕| 一个人www欧美| 深夜精品寂寞黄网站在线观看| 国产欧美精品一区二区三区介绍| 人人澡人人澡人人看欧美| 日韩欧美黄色动漫| 91日本在线观看| 欧美精品videosex牲欧美| 欧美刺激性大交免费视频| 久久国产一区二区三区| 成人国产精品免费视频| 久久中文字幕视频| 成人午夜黄色影院| 精品久久久在线观看| 91精品国产高清久久久久久91| 亚洲第一色在线| 亚洲偷欧美偷国内偷| 亚洲性生活视频在线观看| 97精品欧美一区二区三区| 羞羞色国产精品| 欧美亚洲伦理www| 久久久久久国产精品三级玉女聊斋| 欧美日韩在线第一页| 日韩av在线高清| 91夜夜未满十八勿入爽爽影院| 国产精品亚洲综合天堂夜夜| 国产精品久久久久久久久久久久久久| 成人a在线观看| 亚洲成人aaa| 日本久久久久久| 亚洲福利在线看| 亚洲第一精品夜夜躁人人躁| 午夜精品一区二区三区在线| 欧美中文字幕在线视频| 成人做爽爽免费视频| 亚洲精品美女久久久久| 国产欧美久久久久久| 在线观看国产欧美| 日韩av电影手机在线| 91精品在线观看视频| 亚洲欧美日韩中文在线| 性欧美视频videos6一9| 国产精品成人av在线| 国产欧美一区二区白浆黑人| 欧美另类精品xxxx孕妇| 97成人在线视频| 亚洲亚裔videos黑人hd| 欧美在线视频免费观看| 亚洲国产成人精品久久久国产成人一区| 国产精品欧美一区二区三区奶水| 亚洲一区二区三区在线免费观看| 国产精品久久久久9999| 国产美女直播视频一区| 欧美成人精品不卡视频在线观看| 热99精品只有里视频精品|