1. 程式人生 > >解析網路資料時,String與InputStream互轉的幾種方法

解析網路資料時,String與InputStream互轉的幾種方法

httpurlconnection返回的是inputStream,轉成字串才能解析,以下是轉字串的方法:

inputStream和outputStream的區別:

前者提供讀取方法,後者提供寫入方法

  1. /** 
  2.     * 利用BufferedReader實現Inputstream轉換成String <功能詳細描述> 
  3.     *  
  4.     * @param in 
  5.     * @return String 
  6.     */
  7.    publicstatic String Inputstr2Str_Reader(InputStream in, String encode)  
  8.    {  
  9.        String str = "";  
  10.        try
  11.        {  
  12.            if (encode == null || encode.equals(""))  
  13.            {  
  14.                // 預設以utf-8形式
  15.                encode = "utf-8";  
  16.            }  
  17.            BufferedReader reader = new BufferedReader(new InputStreamReader(in, encode));  
  18.            StringBuffer sb = new
     StringBuffer();  
  19.            while ((str = reader.readLine()) != null)  
  20.            {  
  21.                sb.append(str).append("\n");  
  22.            }  
  23.            return sb.toString();  
  24.        }  
  25.        catch (UnsupportedEncodingException e1)  
  26.        {  
  27.            e1.printStackTrace();  
  28.        }  
  29.        catch (IOException e)  
  30.        {  
  31.            e.printStackTrace();  
  32.        }  
  33.        return str;  
  34.    }  
  35.    /** 
  36.     * 利用byte陣列轉換InputStream------->String <功能詳細描述> 
  37.     *  
  38.     * @param in 
  39.     * @return 
  40.     * @see [類、類#方法、類#成員] 
  41.     */
  42.    publicstatic String Inputstr2Str_byteArr(InputStream in, String encode)  
  43.    {  
  44.        StringBuffer sb = new StringBuffer();  
  45.        byte[] b = newbyte[1024];  
  46.        int len = 0;  
  47.        try
  48.        {  
  49.            if (encode == null || encode.equals(""))  
  50.            {  
  51.                // 預設以utf-8形式
  52.                encode = "utf-8";  
  53.            }  
  54.            while ((len = in.read(b)) != -1)  
  55.            {  
  56.                sb.append(new String(b, 0, len, encode));  
  57.            }  
  58.            return sb.toString();  
  59.        }  
  60.        catch (IOException e)  
  61.        {  
  62.            e.printStackTrace();  
  63.        }  
  64.        return"";  
  65.    }  
  66.    /** 
  67.     * 利用ByteArrayOutputStream:Inputstream------------>String <功能詳細描述> 
  68.     *  
  69.     * @param in 
  70.     * @return 
  71.     * @see [類、類#方法、類#成員] 
  72.     */
  73.    publicstatic String Inputstr2Str_ByteArrayOutputStream(InputStream in,String encode)  
  74.    {  
  75.        ByteArrayOutputStream out = new ByteArrayOutputStream();  
  76.        byte[] b = newbyte[1024];  
  77.        int len = 0;  
  78.        try
  79.        {  
  80.            if (encode == null || encode.equals(""))  
  81.            {  
  82.                // 預設以utf-8形式
  83.                encode = "utf-8";  
  84.            }  
  85.            while ((len = in.read(b)) > 0)  
  86.            {  
  87.                out.write(b, 0, len);  
  88.            }  
  89.            return out.toString(encode);  
  90.        }  
  91.        catch (IOException e)  
  92.        {  
  93.            e.printStackTrace();  
  94.        }  
  95.        return"";  
  96.    }  
  97.    /** 
  98.     * 利用ByteArrayInputStream:String------------------>InputStream <功能詳細描述> 
  99.     *  
  100.     * @param inStr 
  101.     * @return 
  102.     * @see [類、類#方法、類#成員] 
  103.     */
  104.    publicstatic InputStream Str2Inputstr(String inStr)  
  105.    {  
  106.        try
  107.        {  
  108.            // return new ByteArrayInputStream(inStr.getBytes());
  109.            // return new ByteArrayInputStream(inStr.getBytes("UTF-8"));
  110.            returnnew StringBufferInputStream(inStr);  
  111.        }  
  112.        catch (Exception e)  
  113.        {  
  114.            e.printStackTrace();  
  115.        }  
  116.        returnnull;  
  117.    }