从OutputStream转String

一、InputStream转Map

我们在处理请求体时,会将请求体读取成InputStream流,这时我们经常需要将流转成Map,这里就以HttpServletRequest的过滤器为例。

public void doFilter(ServletRequest req, ServletResponse res,
            FilterChain chain) throws IOException, ServletException {
    HttpServletRequest request = (HttpServletRequest) req;
    // 将inputStream转成Map
    Map<String, String> paramMap = getParameterMap(request.getInputStream(),
                request.getContentType());
    // do something
    chain.doFilter(req, res);
}

/**
* 将InputStream转成Map
* 
* @param inputStream
*            请求流
* @param contentType
*            Content-Type
* @return Map 对象
* @throws UnsupportedEncodingException
* @throws IOException
*/
@SuppressWarnings("rawtypes")
private Map<String, String> getParameterMap(InputStream inputStream,
            String contentType) throws UnsupportedEncodingException, IOException {
    Map<String, String> paramMap = new HashMap<String, String>();
    if (contentType != null && contentType.contains("multipart/form-data")) {
        DiskFileItemFactory fileItemFactory = new DiskFileItemFactory();
        ServletFileUpload servletFileUpload = new ServletFileUpload(fileItemFactory);
        try {
            List fileItems = servletFileUpload.parseRequest(new ServletRequestContext(request));
            Iterator it = fileItems.iterator();
            while (it.hasNext()) {
                FileItem fileItem = (FileItem) it.next();
                if (fileItem.isFormField()) {
                    paramMap.put(fileItem.getFieldName(), fileItem.getString());
                }
            }

        } catch (FileUploadException e) {
            LOG.error("Get parameter map failed! ", e);
        }
    } else {
        byte[] body = IOUtils.readFully(inputStream, -1, false);
        paramMap = JsonParserUtils.toMap(new String(body, "UTF-8"));
    }

    return paramMap;
}

二、OutputStream转文件

将OutputStream转成文件在日常开发中是十分常见的需求,这里给出一个方法实现。

/**
* 将OutputStream流写入文件
* 
* @param outputStream
*            源流
* @param filePath
*            目标文件路径
* @throws IOException
*/
public static void outputStreamToFile(OutputStream outputStream, String filePath)
            throws IOException {
    byte[] buffer = new byte[1024];
    int len;
    FileOutputStream fos = null;
    try {
        fos = new FileOutputStream(filePath);
        while ((len = outputStream.read(buffer)) != -1) {
            fos.write(buffer, 0, len);
        }
        fos.flush();
    } finally {
        if (fos != null) {
            fos.close();
        }
    }
}

三、OutputStream编码

在将OutputStream转成String时,要注意编码格式,否则可能会出现乱码的情况。

OutputStream outputStream = new ByteArrayOutputStream();
try {
    outputStream.write("你好".getBytes("UTF-8"));
} catch (IOException e) {
    e.printStackTrace();
}

String result = outputStream.toString("UTF-8");
System.out.println(result);

四、OutputStream用法

OutputStream一般是作为写入数据的流,默认将数据写入到流中,然后再从流中读取到另一段进行处理。

// 文件流
OutputStream outputStream = new FileOutputStream(new File("output.txt"));

// 网络流
OutputStream outputStream = socket.getOutputStream();

五、OutputStream用于

OutputStream主要用于将数据写入到指定的流中,常见的有文件流和网络流。

原创文章,作者:小蓝,如若转载,请注明出处:https://www.506064.com/n/241216.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
小蓝小蓝
上一篇 2024-12-12 12:26
下一篇 2024-12-12 12:26

相关推荐

  • c# enum转换成string

    本文将从以下几个方面详细阐述c#中enum类型转换成string类型的方法及注意事项。 一、基本语法和示例 c#中的enum类型可以看作是一组有名字的常量值,通常用于定义一组相关的…

    编程 2025-04-29
  • JWT String Argument Cannot Be Null or Empty

    JWT(JSON Web Token)是一种用于进行身份验证的标准。在使用JWT时,经常会遇到“JWT String Argument Cannot Be Null or Empt…

    编程 2025-04-27
  • Python中String包含的进阶应用

    对于Python程序员而言,String类型的操作是日常工作中必不可少的一部分。String包含的操作很多,其中最基础的操作就是判断一个字符串是否包含另一个字符串。本篇文章将对Py…

    编程 2025-04-27
  • byte字符串转string解析

    本文将会从以下几个方面对byte字符串转string做详细的阐述: 概述 转换方式 实际应用 代码实现 一、概述 字符串是编程中最常用的一种数据类型。但是,在编程中,我们经常会碰到…

    编程 2025-04-25
  • 深入探讨string类型的默认值

    一、string类型的默认值简介 在C++和许多其他编程语言中,string是一种表示字符串的数据类型。它们可以存储一个或多个字符,可以进行比较、连接和操作。string类型在声明…

    编程 2025-04-25
  • 如何将char转换为string

    一、char和string的区别 在开始讲述如何将char转换为string前,我们需要了解char和string的区别。char是C++语言的一种基础数据类型,用于表示单个字符,…

    编程 2025-04-24
  • C语言string.h中函数的详细介绍

    一、strcpy函数 strcpy函数是C语言中常用的字符串拷贝函数,其原型为: char *strcpy(char *dest, const char *src); 该函数的作用…

    编程 2025-04-23
  • Java String Reverse详解

    一、什么是Java String Reverse 在描述Java String Reverse之前,我们需要先了解什么是字符串翻转。在计算机科学中,字符串翻转是指将字符串中的字符顺…

    编程 2025-04-23
  • 深度了解string类型长度

    string类型是一种非常常用的数据类型,它在许多编程语言中都有广泛的应用。它可以表示任意长度的文本,例如字符串、HTML代码、JSON数据等等。在这篇文章中,我们将从多个方面深度…

    编程 2025-04-23
  • Java String.Join——集合转字符串的利器

    一、基本介绍 Java String.Join是Java8中一个非常实用的静态方法,它的作用是将一个集合或数组转换成一个字符串。 通常我们需要将一组数据以特殊的分隔符连接在一起,例…

    编程 2025-04-18

发表回复

登录后才能评论