1. 程式人生 > >java的InputStream和InputStreamReader有什麼區別??

java的InputStream和InputStreamReader有什麼區別??

解釋一:

InputStream  此抽象類是表示位元組輸入流的所有類的超類

InputStreamReader 是位元組流通向字元流的橋樑:它使用指定的 charset 讀取位元組並將其解碼為字元。它使用的字符集可以由名稱指定或顯式給定,否則可能接受平臺預設的字符集。 


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

解釋二:
java輸入輸出流,使用了裝飾模式
inputstream是最原始的,專注了核心功能
而inputstreamreader是核心功能的裝飾,提供了更封裝的方法

inputstream只能讀位元組,byte陣列,而有reader的可以讀char
如果在reader上再裝飾一層buffered,那麼就可以讀取 string 
方法是 readline()
簡單的檔案上傳:
<%
InputStream is = request.getInputStream();


BufferedReader br = new BufferedReader(new InputStreamReader(is));

String buffer = null;

while((buffer = br.readLine()) != null)
{
out.print(buffer + "<br>");
}
%>