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();
}
}