• inputStream、File、Byte、String等等之间的相互转换


    一:inputStream转换

    1、inputStream转为byte

    //方法一  org.apache.commons.io.IOUtils包下的实现(建议)
    IOUtils.toByteArray(inputStream);
    //方法二  用java代码实现(其实就是对上面方法一的解析)
    public static byte[] toByteArray(InputStream input) throws IOException {
        ByteArrayOutputStream output = new ByteArrayOutputStream();
        byte[] buffer = new byte[1024];
        int n = 0;
        while (-1 != (n = input.read(buffer))) {
            output.write(buffer, 0, n);
        }
        return output.toByteArray();
    }

    2、inputStream转为file

        public static void inputstreamtofile(InputStream ins, File file) throws IOException {
            OutputStream os = new FileOutputStream(file);
            int bytesRead;
            byte[] buffer = new byte[8192];
            while ((bytesRead = ins.read(buffer, 0, 8192)) != -1) {
                os.write(buffer, 0, bytesRead);
            }
            os.close();
            ins.close();
        }

    3、inputStream转为String

    //方法一  使用org.apache.commons.io.IOUtils包下的方法
    IOUtils.toString(inputStream);
    
    //方法二
        /**
         * 将InputStream转换成某种字符编码的String
         * 
         * @param in
         * @param encoding
         * @return
         * @throws Exception
         */
        public static String inputStreamToString(InputStream in, String encoding) {
            String string = null;
            ByteArrayOutputStream outStream = new ByteArrayOutputStream();
            byte[] data = new byte[BUFFER_SIZE];
            int count = -1;
            try {
                while ((count = in.read(data, 0, BUFFER_SIZE)) != -1)
                    outStream.write(data, 0, count);
            } catch (IOException e) {
                logger.error("io异常", e.fillInStackTrace());
            }
    
            try {
                string = new String(outStream.toByteArray(), encoding);
            } catch (UnsupportedEncodingException e) {
                logger.error("字符串编码异常", e.fillInStackTrace());
            }
            return string;
        }

    二:byte[]转换

    1、byte[]转为inputStream

    InputStream sbs = new ByteArrayInputStream(byte[] buf); 

    2、byte[]转为File

      public static void byte2File(byte[] buf, String filePath, String fileName)
        {
            BufferedOutputStream bos = null;
            FileOutputStream fos = null;
            File file = null;
            try
            {
                File dir = new File(filePath);
                if (!dir.exists() && dir.isDirectory())
                {
                    dir.mkdirs();
                }
                file = new File(filePath + File.separator + fileName);
                fos = new FileOutputStream(file);
                bos = new BufferedOutputStream(fos);
                bos.write(buf);
            }
            catch (Exception e)
            {
                e.printStackTrace();
            }
            finally
            {
                if (bos != null)
                {
                    try
                    {
                        bos.close();
                    }
                    catch (IOException e)
                    {
                        e.printStackTrace();
                    }
                }
                if (fos != null)
                {
                    try
                    {
                        fos.close();
                    }
                    catch (IOException e)
                    {
                        e.printStackTrace();
                    }
                }
            }
        }

    3、byte[]转String

    //先将byte[]转为inputStream,然后在转为String
    InputStream is = new ByteArrayInputStream(byte[] byt);
    //然后在根据上文提到的将inputStream转为String的方法去转换

    三、File的转换

    1、file转inputStream

    FileInputStream fileInputStream = new FileInputStream(file);
  • 相关阅读:
    IServiceBehavior, IOperationBehavior,IParameterInspector
    System.IO.Pipelines——高性能IO(三)
    System.IO.Pipelines——高性能IO(二)
    System.IO.Pipelines——高性能IO(一)
    背包问题 —— 四种解法解题
    波音,自动驾驶bug未修复,致346人丧生!5个月内两次坠毁!其中,包括8名中国公民
    2018年Java生态行业报告
    为什么大公司一定要使用DevOps?
    设计微服务的最佳实践
    Spring Boot面试题
  • 原文地址:https://www.cnblogs.com/Amaris-Lin/p/8252948.html
Copyright © 2020-2023  润新知