/* * Copyright (c) 2018-2028, DreamLu All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * Redistributions of source code must retain the above copyright notice, * this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * Neither the name of the dreamlu.net developer nor the names of its * contributors may be used to endorse or promote products derived from * this software without specific prior written permission. * Author: DreamLu 卢春梦 (596392912@qq.com) */ package com.vci.starter.web.util.Lcm; import org.springframework.lang.Nullable; import java.io.*; import java.nio.charset.Charset; /** * 流工具类 * * @author L.cm */ public class IoUtil extends org.springframework.util.StreamUtils { /** * closeQuietly * * @param closeable 自动关闭 */ public static void closeQuietly(@Nullable Closeable closeable) { if (closeable == null) { return; } if (closeable instanceof Flushable) { try { ((Flushable) closeable).flush(); } catch (IOException ignored) { // ignore } } try { closeable.close(); } catch (IOException ignored) { // ignore } } /** * InputStream to String utf-8 * * @param input the InputStream to read from * @return the requested String */ public static String readToString(InputStream input) { return readToString(input, Charsets.UTF_8); } /** * InputStream to String * * @param input the InputStream to read from * @param charset the Charset * @return the requested String */ public static String readToString(@Nullable InputStream input, Charset charset) { try { return IoUtil.copyToString(input, charset); } catch (IOException e) { throw Exceptions.unchecked(e); } finally { IoUtil.closeQuietly(input); } } public static byte[] readToByteArray(@Nullable InputStream input) { try { return IoUtil.copyToByteArray(input); } catch (IOException e) { throw Exceptions.unchecked(e); } finally { IoUtil.closeQuietly(input); } } /** * Writes chars from a String to bytes on an * OutputStream using the specified character encoding. *

* This method uses {@link String#getBytes(String)}. *

* @param data the String to write, null ignored * @param output the OutputStream to write to * @param encoding the encoding to use, null means platform default * @throws NullPointerException if output is null * @throws IOException if an I/O error occurs */ public static void write(@Nullable final String data, final OutputStream output, final Charset encoding) throws IOException { if (data != null) { output.write(data.getBytes(encoding)); } } }