InputStream、byte[]、File相互转换工具类


import java.io.*;
import java.nio.channels.FileChannel;

public class FileUtils_Byte_Stream {

    /**
     * *byte数组转inputstream
     *
     * @param bytes
     * @return
     */
    public static InputStream bytesToInputStream(byte[] bytes) {
        InputStream inputStream = new ByteArrayInputStream(bytes);
        return inputStream;
    }

    /**
     * *inputstream转byte数组
     *
     * @param inputStream
     * @return
     * @throws IOException
     */
    public static byte[] inputStreamToBytes(InputStream inputStream) throws IOException {
        ByteArrayOutputStream output = new ByteArrayOutputStream();
        byte[] buffer = new byte[4096];
        int n = 0;
        while (-1 != (n = inputStream.read(buffer))) {
            output.write(buffer, 0, n);
        }
        return output.toByteArray();
    }

    /**
     * *inputstream转file
     *
     * @param inputStream
     * @param filePath
     * @param fileName
     * @throws IOException
     */
    public static void inputStreamToFile(InputStream inputStream, String filePath, String fileName) throws IOException {
        File dir = new File(filePath);
        if (!dir.exists()) {// 判断文件目录是否存在
            dir.mkdirs();
        }
        File file = new File(filePath + "//" + fileName);
        FileOutputStream outStream = new FileOutputStream(file);
        FileChannel in = ((FileInputStream) inputStream).getChannel();
        FileChannel out = outStream.getChannel();
        in.transferTo(0, in.size(), out);

    }

    /**
     * 将inputStream转化为file
     * @param is
     * @param file 要输出的文件目录
     */
    public static void inputStream2File(InputStream is, File file) throws IOException {
        OutputStream os = null;
        try {
            os = new FileOutputStream(file);
            int len = 0;
            byte[] buffer = new byte[8192];

            while ((len = is.read(buffer)) != -1) {
                os.write(buffer, 0, len);
            }
        } finally {
            os.close();
            is.close();
        }
    }


    /**
     * *file转inputstream
     *
     * @param file
     * @return
     * @throws FileNotFoundException
     */
    public static InputStream fileToInputStream(File file) throws FileNotFoundException {
        InputStream is = new FileInputStream(file);
        return is;
    }

    /**
     * *byte数组转file
     *
     * @param bytes
     * @param filePath
     * @param fileName
     * @throws IOException
     */
    public static void bytesToFile(byte[] bytes, String filePath, String fileName) throws IOException {
        BufferedOutputStream bos = null;
        FileOutputStream fos = null;
        File file = null;
        File dir = new File(filePath);
        if (!dir.exists()) {// 判断文件目录是否存在
            dir.mkdirs();
        }
        file = new File(filePath + "//" + fileName);
        fos = new FileOutputStream(file);
        bos = new BufferedOutputStream(fos);
        bos.write(bytes);
        bos.close();
        fos.close();

    }

    /**
     * *file转byte数组
     *
     * @param file
     * @return
     * @throws IOException
     */
    public static byte[] fileToBytes(File file) throws IOException {
        FileInputStream fis = new FileInputStream(file);
        ByteArrayOutputStream bos = new ByteArrayOutputStream();
        byte[] b = new byte[1024];
        int n;
        while ((n = fis.read(b)) != -1) {
            bos.write(b, 0, n);
        }
        fis.close();
        byte[] data = bos.toByteArray();
        bos.close();
        return data;

    }

    /**
     * *删除文件目录
     *
     * @param dir
     */
    public static void deleFiletDir(String dir) {
        File file = new File(dir);
        if (file.isDirectory()) {
            delFile(file);
        }
    }

    private static void delFile(File file) {
        File[] files = file.listFiles();
        if (files != null && files.length != 0) {
            for (int i = 0; i < files.length; i++) {
                delFile(files[i]);
            }
        }
        file.delete();
    }
}