android中String与InputStream之间的相互转换方式

在android中我们涉及到网络访问以及文件访问时,难免需要写String与InputStream之间的相互转换的相关代码,实现形式:
(或见另一篇相似文章 http://blog.itpub.net/28932681/viewspace-2286125/)
一:纯手戳代码:

1.String to InputStream

String str = “String与InputStream相互转换”;
//str.getBytes()方法是得到一个操作系统默认的编码格式的字节数组,见 http://blog.itpub.net/28932681/viewspace-2286124/
InputStream in_nocode = new ByteArrayInputStream(str.getBytes());
InputStream in_withcode = new ByteArrayInputStream(str.getBytes(“UTF-8”));

2.InputStream to String
方法1:

public String convertStreamToString(InputStream is) {

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


    StringBuilder sb = new StringBuilder();   
    String line = null;   
    try {   
        while ((line = reader.readLine()) != null) {   
            sb.append(line + "/n");   //这里的“/n”一定要加上,原因见http://blog.itpub.net/28932681/viewspace-2286126/
        }   
    } catch (IOException e) {   
        e.printStackTrace();   
    } finally {   
        try {   
            is.close();   
        } catch (IOException e) {   
            e.printStackTrace();   
        }   
    }   
    return sb.toString();   
}   

方法2:

public String inputStream2String (InputStream in) throws IOException {
StringBuffer out = new StringBuffer();
byte[] b = new byte[4096];
for (int n; (n = in.read(b)) != -1;) {
out.append(new String(b, 0, n));
}
return out.toString();
}

方法3:
public static String inputStream2String(InputStream is) throws IOException{
ByteArrayOutputStream baos = new ByteArrayOutputStream();
int len=-1;

byte[] buffer=new byte[1024];
while((len=is.read(buffer))!=-1){
baos.write(buffer, 0, len);
}

is.close();
return baos.toString();

//return new String(baos.toByteArray());
}

二:通过第三方jar包实现,推荐一个jar包,用来转换InputStream到String,代码示例如下:

1 // 引入apache的io包
2 import org.apache.commons.io.IOUtils;
3
4 InputStream in = con.getInputStream();
5 String result = IOUtils.toString(in, “UTF-8”);

请使用浏览器的分享功能分享到微信等