java常用流处理工具StreamTool 常见的InputStream流转字符串, 转字节数组等等

原文:java常用流处理工具StreamTool 常见的InputStream流转字符串, 转字节数组等等

源代码下载:http://www.zuidaima.com/share/1550463397366784.htm

ava 常用流处理工具 StreamTool ,常见的InputStream 流转字符串, 转字节数组等等

**应用场景:

** 1. 文件上传

2. js / css / img 等文件读取输出。 转字符串输出 (js & css) , 转字节数组输出 (img .. swf etc...)

3. 抓取指定 URL 连接的资源。

例如读取 javaniu 首页的 HTML 源代码

4. 如你所见....

/*
 *    Copyright 2012-2013 The Haohui Network Corporation
 */
package com.zuidaima.haohui.common.utils;

import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;

/**
 * <pre>
 * Java 常用流处理工具
 * </pre>
 *
 * @project baidamei
 * @author cevencheng <[email protected]> www.zuidaima.com
 * @create 2012-11-29 下午5:17:32
 */
public class StreamTool {

	/**
	 * 将流另存为文件
	 *
	 * @param is
	 * @param outfile
	 */
	public void streamSaveAsFile(InputStream is, File outfile) {
		FileOutputStream fos = null;
		try {
			File file = outfile;
			fos = new FileOutputStream(file);
			byte[] buffer = new byte[1024];
			int len;
			while((len = is.read(buffer)) > 0){
				fos.write(buffer, 0, len);
			}

		} catch (Exception e) {
			e.printStackTrace();
			throw new RuntimeException(e);
		} finally {
			try {
				is.close();
				fos.close();
			} catch (Exception e2) {
				e2.printStackTrace();
				throw new RuntimeException(e2);
			}
		}
	}
	/**
	 * Read an input stream into a string
	 * @param in
	 * @return
	 * @throws IOException
	 */
	static public String streamToString(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();
	}
	public static byte[] stream2Byte(InputStream is) throws IOException {
		ByteArrayOutputStream baos = new ByteArrayOutputStream();
		int len = 0;
		byte[] b = new byte[1024];
		while ((len = is.read(b, 0, b.length)) != -1) {
		    baos.write(b, 0, len);
		}
		byte[] buffer =  baos.toByteArray();
		return buffer;
	}
	/**
     * @方法功能 InputStream 转为 byte
     * @param InputStream
     * @return 字节数组
     * @throws Exception
     */
    public static byte[] inputStream2Byte(InputStream inStream)
            throws Exception {
        // ByteArrayOutputStream outSteam = new ByteArrayOutputStream();
        // byte[] buffer = new byte[1024];
        // int len = -1;
        // while ((len = inStream.read(buffer)) != -1) {
        // outSteam.write(buffer, 0, len);
        // }
        // outSteam.close();
        // inStream.close();
        // return outSteam.toByteArray();
        int count = 0;
        while (count == 0) {
            count = inStream.available();
        }
        byte[] b = new byte[count];
        inStream.read(b);
        return b;
    }  

    /**
     * @方法功能 byte 转为 InputStream
     * @param 字节数组
     * @return InputStream
     * @throws Exception
     */
    public static InputStream byte2InputStream(byte[] b) throws Exception {
        InputStream is = new ByteArrayInputStream(b);
        return is;
    }  

    /**
     * @功能 短整型与字节的转换
     * @param 短整型
     * @return 两位的字节数组
     */
    public static byte[] shortToByte(short number) {
        int temp = number;
        byte[] b = new byte[2];
        for (int i = 0; i < b.length; i++) {
            b[i] = new Integer(temp & 0xff).byteValue();// 将最低位保存在最低位
            temp = temp >> 8; // 向右移8位
        }
        return b;
    }  

    /**
     * @功能 字节的转换与短整型
     * @param 两位的字节数组
     * @return 短整型
     */
    public static short byteToShort(byte[] b) {
        short s = 0;
        short s0 = (short) (b[0] & 0xff);// 最低位
        short s1 = (short) (b[1] & 0xff);
        s1 <<= 8;
        s = (short) (s0 | s1);
        return s;
    }  

    /**
     * @方法功能 整型与字节数组的转换
     * @param 整型
     * @return 四位的字节数组
     */
    public static byte[] intToByte(int i) {
        byte[] bt = new byte[4];
        bt[0] = (byte) (0xff & i);
        bt[1] = (byte) ((0xff00 & i) >> 8);
        bt[2] = (byte) ((0xff0000 & i) >> 16);
        bt[3] = (byte) ((0xff000000 & i) >> 24);
        return bt;
    }  

    /**
     * @方法功能 字节数组和整型的转换
     * @param 字节数组
     * @return 整型
     * @author www.zuidaima.com
     */
    public static int bytesToInt(byte[] bytes) {
        int num = bytes[0] & 0xFF;
        num |= ((bytes[1] << 8) & 0xFF00);
        num |= ((bytes[2] << 16) & 0xFF0000);
        num |= ((bytes[3] << 24) & 0xFF000000);
        return num;
    }  

    /**
     * @方法功能 字节数组和长整型的转换
     * @param 字节数组
     * @return 长整型
     */
    public static byte[] longToByte(long number) {
        long temp = number;
        byte[] b = new byte[8];
        for (int i = 0; i < b.length; i++) {
            b[i] = new Long(temp & 0xff).byteValue();
            // 将最低位保存在最低位
            temp = temp >> 8;
            // 向右移8位
        }
        return b;
    }  

    /**
     * @方法功能 字节数组和长整型的转换
     * @param 字节数组
     * @return 长整型
     */
    public static long byteToLong(byte[] b) {
        long s = 0;
        long s0 = b[0] & 0xff;// 最低位
        long s1 = b[1] & 0xff;
        long s2 = b[2] & 0xff;
        long s3 = b[3] & 0xff;
        long s4 = b[4] & 0xff;// 最低位
        long s5 = b[5] & 0xff;
        long s6 = b[6] & 0xff;
        long s7 = b[7] & 0xff; // s0不变
        s1 <<= 8;
        s2 <<= 16;
        s3 <<= 24;
        s4 <<= 8 * 4;
        s5 <<= 8 * 5;
        s6 <<= 8 * 6;
        s7 <<= 8 * 7;
        s = s0 | s1 | s2 | s3 | s4 | s5 | s6 | s7;
        return s;
    }
}
时间: 2024-12-29 05:44:05

java常用流处理工具StreamTool 常见的InputStream流转字符串, 转字节数组等等的相关文章

java文件流之copy文件(用一次读取一个字节数组方式)

package fileoutputstream; import java.io.FileInputStream; import java.io.FileOutputStream; public class CopyFileDemo { public static void main(String[] args) throws Exception { //封装数据源 FileInputStream fis = new FileInputStream("fos.txt");//fos.t

Java常用正则表达式验证工具类RegexUtils.java

原文:Java常用正则表达式验证工具类RegexUtils.java 源代码下载地址:http://www.zuidaima.com/share/1550463379442688.htm Java 表单注册常用正则表达式验证工具类,常用正则表达式大集合. 1. 电话号码 2. 邮编 3. QQ 4. E-mail 5. 手机号码 6. URL 7. 是否为数字 8. 是否为中文 9. 身份证 10. 域名 11. IP .... 常用验证应有尽有! 这的确是您从事 web 开发,服务器端表单验证

【java解惑】字符串的字节数组构造函数使用

如下代码: public class Example018 { public static void main(String[] args) { byte bs[] = new byte[256]; for (int i = 0; i < 256; i++) { bs[i] = (byte) i; } string(bs);// 调用1 string(bs, "iso-8859-1");// 调用2 string(bs, "gbk");// 调用3 strin

Java基础知识强化之IO流笔记27:FileInputStream读取数据一次一个字节数组byte[ ]

1. FileInputStream读取数据一次一个字节数组byte[ ]  使用FileInputStream一次读取一个字节数组: int read(byte[]  b) 返回值:返回值其实是实际读取的字节个数 . 2. 代码示例: 1 package com.himi.fileinputstream; 2 3 import java.io.FileInputStream; 4 import java.io.IOException; 5 6 7 8 /** 9 * 10 * 使用FileIn

字符串、字节数组、流之间的相互转换以及文件MD5的计算

1 using System; 2 using System.IO; 3 using System.Security.Cryptography; 4 using System.Text; 5 6 namespace myMethod 7 { 8 class lgs 9 { 10 static void Main() 11 { 12 Console.ReadKey(); 13 } 14 15 /// <summary> 16 /// 使用不同的编码格式将 字符串 → 字节数组 17 /// &l

Java 常用的日志工具——JDK自带的java.util.logging包、APACHE 的log4j 与 slf4j日志处理接口

考虑以下情况: (1).根据程序输出可以很好地帮助程序员调试程序.在编写小型程序时,可以在程序中不断增加 System.out.print() 语句来查看程序运行状态:在大型系统中,显然这一做法非常不对,可以考虑将调试信息通过日志处理工具,输出到一个文本文件中,然后查看文件内容. (2).在系统开始线上运行后,系统管理人员需要获知系统的运行情况,包括但不限于系统开始运行时间.系统关闭时间.系统目前处理任务等,这些状态需要输出到一个经过格式化的日志文件中,供管理人员查看: (3).在编写系统,甚至

java 常用的解析工具

这里介绍两种 java 解析工具. 第一种:java 解析 html 工具 jsoup 第二种: java 解析 XML 工具 Dom4j jsoup jsoup是一个用于处理真实HTML的Java库.它提供了一个非常方便的API,用于提取和操作数据,使用最好的DOM,CSS和类似jquery的方法. 官网:https://jsoup.org/ 下载:https://jsoup.org/packages/jsoup-1.12.1.jar maven: <dependency> <!--

C#字符串、字节数组和内存流间的相互转换 - IT浪潮之巅

定义string变量为str,内存流变量为ms,比特数组为bt 1.字符串=>比特数组 (1)byte[] bt=System.Text.Encoding.Default.GetBytes("字符串"); (2)byte[] bt=Convert.FromBase64String("字符串"); 补充: System.Text.Encoding.Unicode.GetBytes(str); System.Text.Encoding.UTF8.GetBytes(

C#字符串、字节数组和内存流间的相互转换

定义string变量为str,内存流变量为ms,比特数组为bt 1.字符串=>比特数组 (1)byte[] bt=System.Text.Encoding.Default.GetBytes("字符串"); (2)byte[] bt=Convert.FromBase64String("字符串"); 补充: System.Text.Encoding.Unicode.GetBytes(str); System.Text.Encoding.UTF8.GetBytes(