1. 程式人生 > >java基礎——InputStream、InputStreamReader和Reader的關係

java基礎——InputStream、InputStreamReader和Reader的關係

InputStream:得到的是位元組輸入流,InputStream.read("filename")之後,得到位元組流

Reader:讀取的是字元流

InputStreamReader:從位元組到字元的橋樑。InputStreamReader(InputStream.read("filename"));

reader.read(InputStreamReader(InputStream in));便可從位元組變為字元,列印顯示了。

java.io.Reader 和 java.io.InputStream 組成了Java 輸入類。

Reader 用於讀入16位字元,也就是Unicode 編碼的字元;而 InputStream 用於讀入 ASCII

 字元和二進位制資料。

Reader支援16位的Unicode字元輸出,

InputStream支援8位的字元輸出。

Reader和InputStream分別是I/O庫提供的兩套平行獨立的等級機構,

1byte = 8bits

InputStream、OutputStream是用來處理8位元的流,

Reader、Writer是用來處理16位元的流。

而在JAVA語言中,byte型別是8位的,char型別是16位的,所以在處理中文的時候需要用Reader和Writer。

值得說明的是,在這兩種等級機構下,還有一道橋樑InputStreamReader、OutputStreamWriter負責進行InputStream到Reader的適配和由OutputStream到Writer的適配。

在 Java中,有不同型別的 Reader 輸入流對應於不同的資料來源:

FileReader 用於從檔案輸入; CharArrayReader 用於從程式中的字元陣列輸入; StringReader 用於從程式中的字串輸入; PipedReader 用於讀取從另一個執行緒中的 PipedWriter 寫入管道的資料。

相應的也有不同型別的 InputStream 輸入流對應於不同的資料來源:FileInputStream,ByteArrayInputStream,StringBufferInputStream,PipedInputStream。

另外,還有兩種沒有對應 Reader 型別的 InputStream 輸入流: Socket 用於套接字; URLConnection 用於 URL 連線。 這兩個類使用 getInputStream() 來讀取資料。

相應的,java.io.Writer 和 java.io.OutputStream 也有類似的區別。

相關推薦

java基礎——InputStreamInputStreamReaderReader關係

InputStream:得到的是位元組輸入流,InputStream.read("filename")之後,得到位元組流 Reader:讀取的是字元流 InputStreamReader:從位元組到字元的橋樑。InputStreamReader(InputStream.read("filename"));

轉載:【Java基礎InputStream InputStreamReaderBufferedReader

gen 結果 取字符 sys try eight string font buffer 來源:http://blog.csdn.net/zgljl2012/article/details/47267609 在Java中,上述三個類經常用於處理數據流,下面介紹一下三個類的

Java InputStream InputStreamReaderBufferedReader

https overflow 截圖 nco ktr one num import 語言 https://blog.csdn.net/zgljl2012/article/details/47267609 在Java中,上述三個類經常用於處理數據流,下面介紹一下三個類的不同之處

Java基礎-----StringStringBufferStringBuilder類

String、StringBuffer和StringBuilder類的區別 1、String是一個不可變的字元序列。 2、StringBuffer,StringBuilder是可變的字元序列。 3、StringBuffer和StringBuilder類的方法基本都是一樣的,不一樣的地

java基礎之變量常量類型轉換

聲明 src .cn ble .com 不能 需要 bsp 字母 一、 變量 變量是可改變的量,每賦個值便會開辟一個新內存地址。 1、首先,變量需要一個聲明,例如:int a,這個a也可以當作是一個標簽,它指向了一個內存地址,這個地址是屬於int類型的套餐,可以通過

Java基礎——StringStringBuilerStringBuffer的用法區別

1.區別 1.1 三者本質區別 String:每次增加資料都會開闢新空間,儲存資料,將上一塊空間通過GC進行回收 StringBuiler、StringBuffer:是可變長度,資料增加是直接在現有空間進行操作 1.2 StringBuiler StringBuffer

悉數四代PaaS發展,一文理順基礎設施平臺工作流之間的關係_Kubernetes中文社群

Datawire團隊最近的一次交流,是關於“PaaS”這一術語的真正含義,以及它與開發人員體驗(DevEx)和工作流之間的關係,帶來了許多可以分享的內部對話。從和客戶一起工作,到會議上與人的聊天中,我感覺到,其他團隊對於部署應用程式時“平臺”和工作流之間的關係也有些不確定,我希望以建設性的方式

Java基礎學習之介面抽象類的概念區別及適用的場景

1.介面   介面是抽象方法的集合,一個介面只有方法的形狀而沒有方法的具體實現,介面是Java面向物件提供的一種機制。   Java語言是一種單繼承的,在類的繼承中通過實現多個介面間接實現了多繼承功能。介面的宣告: [public] interface InterfaceName{

Java基礎學習 三 (類物件成員修飾符this關鍵字成員的初始化構造器初始化)

面向物件的基本概念 類和物件   1.類的宣告 [修飾符關鍵字] class 類名 [extends 父類名] [implements 介面1,介面2]{ //類的主體內容 } public class tt extends Test implements Te

java基礎:標識符組成規則

規則 字母 方法 java基礎 font clas 本質 java class 標識符的概念: 就是給類,接口,方法,變量等起名字的字符序列 標識符的組成規則: A:英文大小寫字母 B:數字 C:$和_ 註意事項: A:不能以數字開頭 B:不能是java中的關鍵字 C

Java基礎:初始化清理

class mil key java基礎 一個 add one his span 轉載請註明出處:jiq?欽‘s technical Blog (1) 初始化:所以假設繼承關系為:A導出B再導出C,在創建C對象的情況下的調用順序是: * (1) A的靜態域,B的靜態域

Java 重載重寫隱藏的區別

目標 phi 為什麽不能 int title ide 修改 cati 修飾 Java 重載、重寫和隱藏的區別 一、重載(Overload) 註意:為了正確的區分重載和重寫,請各位務必記清重載(Overload)和重寫(Override)的英文。 (1)重載定義:表示

Java之bytecharString類型相互轉換

rac static rgs div body valueof () print byte[] 1 package basictype; 2 3 /** 4 * byte、char和String類型相互轉換 5 */ 6 public class C

Java基礎18-日期類日歷類

員工 con 年月日 也有 color 發現 time uri span 一、java.util.Date日期類 private Integer age;//員工年齡private String hireDate;//入職時間在系統中存儲的是員工的基本信息,包括了員工的年齡

java基礎序--列化反序列化

color tran public png gin jdk style 硬盤 brush 一、什麽是序列化和反序列化:   序列化:是指把java堆內存中的對象轉換成字節(二進制流)的過程。也就是通過某種方式將java對象存儲在磁盤內存中,這個過程稱為序列化   反序列化:

java 基礎 ---HashMapHashTable

shc 單鏈表 tor 索引 ide amp its nth 由於 HashMap、HashTable區別。 1、HashMap線程不安全,HashTable線程安全; 2、HashMap的鍵和值都允許null值存在,而HashTable不允許; 3、HashMap的

java中StringStringBufferStringBuilder的區別(簡單介紹)

情況 string 建議 code serializa 就是 同步 安全性 之間 簡單介紹 java中用於處理字符串常用的有三個類: 1、java.lang.String 2、java.lang.StringBuffer 3、java.lang.StrungBuilder

2.Java基礎:方法定義調用

處理 參數傳遞 nbsp 功能 方式 基本數據 方法名 color 值類型 一、方法的定義 1.類的方法代表的是實力的某種行為(或功能) 方法的定義:方法類型 、 方法簽名 、 方法體 2.定義類的方法 訪問修飾符 類型 方法名(參數列表){ ///方法體 }

12. Java基礎之抽象類接口

pre is-a 解決方案 自動變 有理 void 包括 重寫 跨域 接口和內部類為我們提供了一種將接口與實現分離的更加結構化的方法。 抽象類與接口是java語言中對抽象概念進行定義的兩種機制,正是由於他們的存在才賦予java強大的面向對象的能力。他們兩者之

InputStream InputStreamReader BufferedReader區別

一行 != file 抽象類 它的 throw 讀取文本 通用 表示 區別介紹:1、InputStream、OutputStream 處理字節流的抽象類 InputStream 是字節輸入流的所有類的超類,一般我們使用它的子類,如FileInputStream等. Outp