package com.github.sd4324530.fastweixin.util; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import java.io.Closeable; import java.io.IOException; import java.io.InputStream; import java.io.OutputStream; /** * 套接字工具类 * * @author peiyu */ public final class StreamUtil { private static final Logger LOG = LoggerFactory.getLogger(StreamUtil.class); private StreamUtil() { } /** * 将输入流的内容复制到输出流里 * * @param in 输入流 * @param out 输出流 * @return 复制的数据字节数 * @throws IOException IO异常 */ public static int copy(InputStream in, OutputStream out) throws IOException { BeanUtil.requireNonNull(in, "No InputStream specified"); BeanUtil.requireNonNull(out, "No OutputStream specified"); int byteCount = 0; byte[] buffer = new byte[4096]; int bytesRead1; for (; (bytesRead1 = in.read(buffer)) != -1; byteCount += bytesRead1) { out.write(buffer, 0, bytesRead1); } out.flush(); return byteCount; } /** * 关闭需要关闭的对象,如果关闭出错,给出警告 * * @param closeable 需要关闭的对象 */ public static void closeWithWarn(Closeable closeable) { if (BeanUtil.nonNull(closeable)) { try { closeable.close(); } catch (IOException e) { LOG.warn("关闭流出错......", e); } } } }