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

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

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

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

首先給大家介紹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
91夜夜揉人人捏人人添红杏| 91久久久久久久久久| 国产精品成人免费视频| 国产91精品黑色丝袜高跟鞋| 北条麻妃在线一区二区| 国产丝袜精品第一页| 中文字幕亚洲欧美一区二区三区| x99av成人免费| 久久精品99久久香蕉国产色戒| 欧美在线观看日本一区| 国产成人自拍视频在线观看| 九九精品在线视频| 国产精品第8页| 欧美精品www在线观看| 欧亚精品中文字幕| 欧美壮男野外gaytube| 日韩精品极品毛片系列视频| 日韩二区三区在线| 欧美日韩国产中文字幕| 亚洲sss综合天堂久久| 欧美大成色www永久网站婷| 亚洲已满18点击进入在线看片| 久久久久中文字幕| 中文字幕精品影院| 精品一区二区三区四区在线| 日韩在线视频观看正片免费网站| 97色在线播放视频| 成人h猎奇视频网站| 亚洲男人天堂网| 欧美日韩午夜剧场| 91极品女神在线| 国产精品视频xxx| 日本精品性网站在线观看| 日韩精品视频中文在线观看| 国产精品日本精品| 国产精品久久久久久久久影视| 日韩亚洲欧美中文高清在线| 国产一区二区成人| 国产成人精品a视频一区www| 69久久夜色精品国产69| 欧美极品美女视频网站在线观看免费| 中文字幕综合在线| 成人黄色片网站| 国产精品va在线| 国产精品一区二区三区毛片淫片| 亚洲自拍另类欧美丝袜| 亚洲人午夜精品免费| 国产成人精品999| 91精品国产综合久久久久久蜜臀| 久久久精品一区二区三区| 美女啪啪无遮挡免费久久网站| 亚洲精品永久免费| 亚洲欧美日韩精品久久亚洲区| 亚洲欧美一区二区激情| 欧美自拍视频在线观看| 日韩在线视频一区| 69**夜色精品国产69乱| 欧美另类精品xxxx孕妇| 亚洲大胆人体在线| 国产日韩欧美黄色| 亚洲精品资源在线| 国产精品日韩欧美大师| 亚洲人成电影网站色xx| 国产精品一区久久| 亚州欧美日韩中文视频| 欧美成aaa人片在线观看蜜臀| 97精品国产97久久久久久免费| 91精品国产高清久久久久久| 久久久久久久999精品视频| 97精品一区二区视频在线观看| 亚洲毛片一区二区| 18性欧美xxxⅹ性满足| 免费不卡在线观看av| 日本19禁啪啪免费观看www| 欧美电影免费播放| 538国产精品一区二区免费视频| 日韩经典一区二区三区| 日韩欧美中文字幕在线观看| 欧美亚洲一级片| 国产小视频国产精品| 日韩在线小视频| 国产综合色香蕉精品| 91av视频在线免费观看| 欧美激情一区二区久久久| 亚洲激情电影中文字幕| 欧美亚洲在线观看| 欧美精品亚州精品| 欧美黑人xxxx| 97精品视频在线观看| 亚洲精品国产精品乱码不99按摩| 欧美大学生性色视频| 久久久久久久影视| 欧美性视频在线| 欧美高清激情视频| 欧美一区第一页| www.亚洲一二| 亚洲а∨天堂久久精品喷水| 91精品国产综合久久男男| 亚洲国产成人久久| 日韩综合视频在线观看| 在线观看91久久久久久| 久久久综合免费视频| 国产精品午夜国产小视频| 亚洲精品av在线| 欧美日韩国产综合视频在线观看中文| 97香蕉超级碰碰久久免费软件| 性色av一区二区三区红粉影视| 国产精品一二三在线| 欧美一区二区大胆人体摄影专业网站| 麻豆国产va免费精品高清在线| 国产日韩欧美电影在线观看| 日韩av综合网| 日韩av手机在线| 日韩精品在线视频观看| 亚洲最大福利视频网站| 色午夜这里只有精品| 国产亚洲精品一区二555| 中文字幕av一区中文字幕天堂| 91欧美精品成人综合在线观看| 亚洲高清av在线| 性欧美长视频免费观看不卡| 一区二区三区无码高清视频| 欧美亚洲午夜视频在线观看| 国产99久久久欧美黑人| 精品久久久久久久久久国产| 欧美视频二区36p| 国产欧美日韩专区发布| 国产精品一香蕉国产线看观看| 国产精品视频大全| 在线观看欧美日韩| 久久久伊人日本| 亚洲精品乱码久久久久久按摩观| 国产视频精品免费播放| 亚洲视频一区二区三区| 欧美午夜精品久久久久久久| 国产一区在线播放| 亚洲天堂av高清| 97在线视频免费| 91精品国产自产91精品| 国产精品第一区| 久久久噜噜噜久久| 精品久久久久久中文字幕大豆网| 国产亚洲精品综合一区91| 国语对白做受69| 少妇高潮久久久久久潘金莲| 久久99精品国产99久久6尤物| 国产精品一区二区电影| 久久亚洲精品一区二区| 成人在线激情视频| 日本成人精品在线| 国产精品麻豆va在线播放| 97国产在线视频| 欧美午夜精品久久久久久久| 97超碰国产精品女人人人爽| 国内精品小视频| 这里精品视频免费| 精品久久久久久久久久久| 午夜精品www| 亚洲成人黄色在线观看| 日韩一区二区三区在线播放| 久久久精品一区二区三区| 国产精品99久久久久久久久久久久| 国产视频精品免费播放| 日韩经典一区二区三区|