天天看點

Java 中request.getInputStream()和BufferedReader 和 InputStreamReader 用法

浏覽器 采用了一種編碼方式,即 "multipart/form-data" 的編碼方式,采用這種方式,浏覽器可以很容易将表單内的資料和檔案放在一起發送.這 種編碼方式先定義好一個不可能在資料中出現的字元串作為 分界符,然後用它将各個資料段分開,而對于每個資料段都對應着 HTML 頁面表單 中的一個 Input 區,包括一個 content-disposition 屬性,說明了這個資料段的一些資訊,如果這個資料段的内容是一個檔案,還會有 Content-Type 屬性,然後就是資料本身. 我們可以用request.getInputStream()或request.getReader()得到 送出的資料.

BufferedReader 類

BufferedReader 由Reader類擴充而來,提供通用的緩沖方式文本讀取,而且提供了很實用的readLine,讀取一個文本行,從字元輸入流中讀取文本,緩沖各個字元,進而提供字元、數組和行的高效讀取。

一般用法:

BufferedReader br = new BufferedReader(new InputStreamReader(new FileInputStream("ming.txt")));

  String data = null;

  while((data = br.readLine())!=null)

  {

   System.out.println(data); 

  }

示例如下:

public static String getHtml(String url) throws IOException {

String source ="";

String line ="";

URL _url = new URL(url);

InputStream inStream = _url.openStream();

BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(inStream,"UTF-8"));

while((line = bufferedReader.readLine())!=null) {

source += line;

}

return source;

InputStreamReader 類

是位元組流通向字元流的橋梁,封裝了InputStream在裡頭, 它以較進階的方式,一次讀取一個一個字元,以文本格式輸入 / 輸出,可以指定編碼格式;

InputStreamReader isr = new InputStreamReader(new FileInputStream("ming.txt"));

   while((ch = isr.read())!=-1)

   {

    System.out.print((char)ch); 

   }

public static String getHtmlSource( String  url) throws MalformedURLException, IOException {

URLConnection uc = new URL(url).openConnection();

uc.setConnectTimeout(10000);

uc.setDoOutput(true);

InputStream in = new BufferedInputStream(uc.getInputStream());

InputStreamReader rd = new InputStreamReader(in,"gb2312");

int c = 0;

StringBuffer temp = new StringBuffer();

while((c = rd.read())!= -1){

       temp.append((char)c);

in.close();

return temp.toString();