β

Android Java InputStream处理相关代码

傻东の学习笔记 366 阅读

代码分享第二集:关于InputStream处理的一些函数,主要是出于方便的目的,将InputStream转为String,JSONArray,JSONObject,byte。中间有些是由于本人使用环境的特殊性,那样写的,诸位看官可根据自己实际情况改。代码中提供了两种处理inputstream的方法,不说哪种效率更高,有兴趣可以用前一篇文章 Android计时器代码分享 里的代码来看看。

下面贴代码,推荐用右边的分享按钮告诉你的朋友哦~有意见有想法的,欢迎留言吐槽!

[java]
package shiyi.android.utils;

import java.io.BufferedReader;
import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.UnsupportedEncodingException;

import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.graphics.drawable.Drawable;

/**
* @author Chen.Zhidong
*
*/
public class StreamUtil {
/**
* InputStream转String
* 这里用的方法和下面一个函数方法不同,看官看到下面的函数自然会明白
* @param is
* @param encode
* @return
*/
public static String stream2string(InputStream is, String encode) {
if (is != null) {
try {
BufferedReader reader = new BufferedReader(new InputStreamReader(is, encode));
StringBuilder sb = new StringBuilder();
String line = null;
while ((line = reader.readLine()) != null) {
sb.append(line + “\n”);
}
is.close();
return sb.toString();
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
return “”;
}

/**
* InputStream转jsonarray
* 此处在处理InputStream时所用的方法和上面一个函数不同,只是多列出一个可用方法,实际使用时,请考虑一下效率问题
* 至于转成jsonarray的笨办法只是由于个人需求,接口也是自己写的,有十足把握不会导致出错,各位看官莫怪,轻易不要这样干
* @param is
* @return
*/
public static String stream2jarray(InputStream is) {
if (is != null) {
StringBuffer sb = new StringBuffer();
byte[] b = new byte[4096];
try {
for(int n;(n=is.read(b))!=-1;){
sb.append(new String(b,0,n));
}
is.close();
if(sb.charAt(0) == ‘{‘){
return “["+sb.toString()+"]“;
}
else{
return sb.toString();
}
} catch (IOException e) {
e.printStackTrace();
}
}
return “”;
}

/**
* InputStream转jsonobject
* 转jsonobject时同样使用了笨办法,轻易不要照我这样用
* @param is
* @return
*/
public static String stream2jobject(InputStream is) {
if (is != null) {
StringBuffer sb = new StringBuffer();
byte[] b = new byte[4096];
try {
for(int n;(n=is.read(b))!=-1;){
sb.append(new String(b,0,n));
}
is.close();
if (sb.charAt(0) == ‘[') {
return "{\"jarray\":" + sb.toString() + "}";
}
else {
return sb.toString();
}
} catch (IOException e) {
e.printStackTrace();
}
}
return "";
}

public static String stream2string(InputStream is) {
return stream2string(is, "utf-8");
}

/**
* @param inStream
* @return
* @throws Exception
*/
public static byte[] stream2byte(InputStream inStream) throws Exception {
byte[] buffer = new byte[1024];
int len = -1;
ByteArrayOutputStream outStream = new ByteArrayOutputStream();
while ((len = inStream.read(buffer)) != -1) {
outStream.write(buffer, 0, len);
}
byte[] data = outStream.toByteArray();
outStream.close();
inStream.close();
return data;
}
}

[/java]

相关日志:

作者:傻东の学习笔记
寻找大师, 模仿大师, 跟随大师, 洞察大师, 成为大师!
原文地址:Android Java InputStream处理相关代码, 感谢原作者分享。