/**
|
* Alipay.com Inc.
|
* Copyright (c) 2004-2012 All Rights Reserved.
|
*/
|
package org.springblade.common.utils.sms;
|
|
import java.io.*;
|
|
/**
|
*
|
* @author runzhi
|
*/
|
public class StreamUtil {
|
private StreamUtil(){}
|
|
private static final int DEFAULT_BUFFER_SIZE = 8192;
|
|
public static void io(InputStream in, OutputStream out) throws IOException {
|
io(in, out, -1);
|
}
|
|
public static void io(InputStream in, OutputStream out, int bufferSize) throws IOException {
|
if (bufferSize == -1) {
|
bufferSize = DEFAULT_BUFFER_SIZE;
|
}
|
|
byte[] buffer = new byte[bufferSize];
|
int amount;
|
|
while ((amount = in.read(buffer)) >= 0) {
|
out.write(buffer, 0, amount);
|
}
|
}
|
|
public static void io(Reader in, Writer out) throws IOException {
|
io(in, out, -1);
|
}
|
|
public static void io(Reader in, Writer out, int bufferSize) throws IOException {
|
if (bufferSize == -1) {
|
bufferSize = DEFAULT_BUFFER_SIZE >> 1;
|
}
|
|
char[] buffer = new char[bufferSize];
|
int amount;
|
|
while ((amount = in.read(buffer)) >= 0) {
|
out.write(buffer, 0, amount);
|
}
|
}
|
|
public static OutputStream synchronizedOutputStream(OutputStream out) {
|
return new SynchronizedOutputStream(out);
|
}
|
|
public static OutputStream synchronizedOutputStream(OutputStream out, Object lock) {
|
return new SynchronizedOutputStream(out, lock);
|
}
|
|
public static String readText(InputStream in) throws IOException {
|
return readText(in, null, -1);
|
}
|
|
public static String readText(InputStream in, String encoding) throws IOException {
|
return readText(in, encoding, -1);
|
}
|
|
public static String readText(InputStream in, String encoding, int bufferSize)
|
throws IOException {
|
Reader reader = (encoding == null) ? new InputStreamReader(in) : new InputStreamReader(in,
|
encoding);
|
|
return readText(reader, bufferSize);
|
}
|
|
public static String readText(Reader reader) throws IOException {
|
return readText(reader, -1);
|
}
|
|
public static String readText(Reader reader, int bufferSize) throws IOException {
|
StringWriter writer = new StringWriter();
|
|
io(reader, writer, bufferSize);
|
return writer.toString();
|
}
|
|
private static class SynchronizedOutputStream extends OutputStream {
|
private OutputStream out;
|
private Object lock;
|
|
SynchronizedOutputStream(OutputStream out) {
|
this(out, out);
|
}
|
|
SynchronizedOutputStream(OutputStream out, Object lock) {
|
this.out = out;
|
this.lock = lock;
|
}
|
|
@Override
|
public void write(int datum) throws IOException {
|
synchronized (lock) {
|
out.write(datum);
|
}
|
}
|
|
@Override
|
public void write(byte[] data) throws IOException {
|
synchronized (lock) {
|
out.write(data);
|
}
|
}
|
|
@Override
|
public void write(byte[] data, int offset, int length) throws IOException {
|
synchronized (lock) {
|
out.write(data, offset, length);
|
}
|
}
|
|
@Override
|
public void flush() throws IOException {
|
synchronized (lock) {
|
out.flush();
|
}
|
}
|
|
@Override
|
public void close() throws IOException {
|
synchronized (lock) {
|
out.close();
|
}
|
}
|
}
|
}
|