Java streamtool

2894 ワード


import java.io.*;
import java.text.DecimalFormat;

/**
 * 
* @     :ProtectSystem
* @     :StreamTool.java
* @    :cn.yws.activity.util
* @     :I/O     
* @     :2012-6-1
 */
public class StreamTool {



	public static String readableFileSize(long size) {
		if (size <= 0) {
			return "0";
		}
		final String[] units = new String[]{"B", "kB", "MB", "GB", "TB"};
		int digitGroups = (int) (Math.log10(size) / Math.log10(1024));
		return new DecimalFormat("#,##0.#").format(size / Math.pow(1024, digitGroups)) + " " + units[digitGroups];
	}
	
	 public static void copy(InputStream inputStream, String filePath) throws Exception {
		 
		 byte[] buffer=readStream(inputStream);
		 save(filePath, buffer);
		 
	 }
	 /**        */
	 public static void save(File file, byte[] data) throws Exception {
		 FileOutputStream outStream = new FileOutputStream(file);
		 outStream.write(data);
		 outStream.flush();
		 outStream.close();
	 }
	 /**        */
	 public static void save(String filePath, byte[] data) throws Exception {
		 FileOutputStream outStream = new FileOutputStream(filePath);
		 outStream.write(data);
		 outStream.flush();
		 outStream.close();
	 }


	public static byte[] readFile(String filepath) throws Exception {
		ByteArrayOutputStream outSteam = new ByteArrayOutputStream();
		FileInputStream inStream=new FileInputStream(filepath);
		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();
	} 
	 
	 public static String readLine(PushbackInputStream in) throws IOException {
			char buf[] = new char[128];
			int room = buf.length;
			int offset = 0;
			int c;
loop:		while (true) {
				switch (c = in.read()) {
					case -1:
					case '
': break loop; case '\r': int c2 = in.read(); if ((c2 != '
') && (c2 != -1)) in.unread(c2); break loop; default: if (--room < 0) { char[] lineBuffer = buf; buf = new char[offset + 128]; room = buf.length - offset - 1; System.arraycopy(lineBuffer, 0, buf, 0, offset); } buf[offset++] = (char) c; break; } } if ((c == -1) && (offset == 0)) return null; return String.copyValueOf(buf, 0, offset); } /** * * @param inStream * @return * @throws Exception */ public static byte[] readStream(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(); } }