>>Android Java InputStream处理相关代码


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

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

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处理相关代码》有 1 条评论

发表评论

电子邮件地址不会被公开。 必填项已用 * 标注

*

您可以使用这些 HTML 标签和属性: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>

注意: 评论者允许使用'@user:'的方式将自己的评论通知另外评论者。例如, ABC是本文的评论者之一,则使用'@ABC:'(不包括单引号)将会自动将您的评论发送给ABC。请务必注意user必须和评论者名相匹配(大小写一致)。