流读取工具类

版权声明:@By Author Hadoop.W https://blog.csdn.net/u013786479/article/details/82625265

package org.wxz.tools.oracle.io.util;

import java.io.BufferedInputStream;
import java.io.BufferedReader;
import java.io.ByteArrayOutputStream;
import java.io.InputStream;
import java.io.Reader;

import org.wxz.tools.oracle.exception.print.util.ExceptionPrintUtil;
import org.wxz.tools.oracle.io.callback.IOReadCallback;

/**
* 流读取工具类
*
* @author XiongZhi.Wu 2017年12月10日
*/
public abstract class IOReadUtil {
/**
* 读取
*
* @author XiongZhi.Wu 2017年12月10日
* @param is
* 输入流
* @return
*/
public static byte[] loopRead(InputStream is) {
ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream();
loopRead(is, new IOReadCallback() {

        @Override
        public void service(Integer bit) {
            byteArrayOutputStream.write(bit);
        }
    });
    return byteArrayOutputStream.toByteArray();
}

/**
 * 读取
 * 
 * @author XiongZhi.Wu 2017年12月10日
 * @param is
 *            输入流
 * @param ioReadCallback
 *            回调类
 */
public static void loopRead(InputStream is, IOReadCallback<Integer> ioReadCallback) {
    try {
        BufferedInputStream bufferedInputStream = null;
        if (is instanceof BufferedInputStream) {
            bufferedInputStream = (BufferedInputStream) is;
        } else {
            bufferedInputStream = IOOpenUtil.initBufferedInputStream(is);
        }
        int bit;
        while ((bit = bufferedInputStream.read()) != -1) {
            ioReadCallback.service(bit);
        }
    } catch (Exception e) {
        throw new RuntimeException(ExceptionPrintUtil.initExceptionPrintModel(e, "InputStream Loop Read Cause Exception."));
    } finally {
        IOCloseUtil.closeInputStream(is);
    }
}

/**
 * 读取
 * 
 * @author XiongZhi.Wu 2017年12月10日
 * @param reader
 *            输入流
 * @return
 */
public static String loopRead(Reader reader) {
    StringBuilder record = new StringBuilder();
    loopRead(reader, new IOReadCallback<String>() {

        @Override
        public void service(String line) {
            record.append(line);
        }
    });
    return record.toString();
}

/**
 * 读取
 * 
 * @author XiongZhi.Wu 2017年12月10日
 * @param reader
 *            输入流
 * @param ioReadCallback
 *            回调类
 */
public static void loopRead(Reader reader, IOReadCallback<String> ioReadCallback) {
    try {
        BufferedReader bufferedReader = null;
        if (reader instanceof BufferedReader) {
            bufferedReader = (BufferedReader) reader;
        } else {
            bufferedReader = IOOpenUtil.initBufferedReader(reader);
        }
        String line;
        while ((line = bufferedReader.readLine()) != null) {
            ioReadCallback.service(line);
        }
    } catch (Exception e) {
        throw new RuntimeException(ExceptionPrintUtil.initExceptionPrintModel(e, "Reader Loop Read Cause Exception."));
    } finally {
        IOCloseUtil.closeReader(reader);
    }
}

}

猜你喜欢

转载自blog.csdn.net/u013786479/article/details/82625265
今日推荐