最近用到 String与InputStream相互转换 总结一下
1.String to InputStream
String str = "String to InputStream";
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"); } } catch (IOException e) { e.printStackTrace(); } finally { try { is.close(); } catch (IOException e) { e.printStackTrace(); } } return sb.toString(); }
or
public String getStrFromInputSteam(InputSteam in){
BufferedReader bf=new BufferedReader(new InputStreamReader(in,"UTF-8"));
//最好在将字节流转换为字符流的时候 进行转码
StringBuffer buffer=new StringBuffer();
String line="";
while((line=bf.readLine())!=null){
buffer.append(line);
}
return buffer.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 i=-1;
while((i=is.read())!=-1){
baos.write(i);
}
return baos.toString();
}
第一种方法使用可用的,其他的可以参考。希望可以帮到大家。