在java中如何将inputStream对象转换为File对象(不生成本地文件)

 更新时间:2025年03月31日 09:48:17   作者:爱学习的大雄  
这篇文章主要介绍了在java中如何将inputStream对象转换为File对象(不生成本地文件),具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教

需求说明

在后端中通过POI生成Excel文件流,将输出流(outputStream)转为输入流(inputStream)后又需要将输入流(inputStream)转为File对象

问题:如果需要将输入流(inputStream)转为File对象,则必须要根据本地路径去生成一个File对象才行,也就是说不管怎样本地都必须要生成出来一个文件

问题解决

在经过一系列的资料查询后,发现如下方式可以大致满足需求

import org.apache.commons.io.IOUtils;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
public class StreamUtil {
    static final String PREFIX = "stream2file";//前缀字符串定义文件名;必须至少三个字符
    static final String SUFFIX = ".tmp";//后缀字符串定义文件的扩展名;如果为null,则将使用后缀".tmp"
    public static File stream2file (InputStream in) throws IOException {
        final File tempFile = File.createTempFile(PREFIX, SUFFIX);
        tempFile.deleteOnExit();
        try (FileOutputStream out = new FileOutputStream(tempFile)) {
            IOUtils.copy(in, out);
        }
        return tempFile;
    }
}

我们运行以上程序后tempFile即为我们需要的File对象。

看到这里你可能会好奇,这不是也在本地生成了个文件吗?

但是它生成的文件位置是存储在以下的(计算机的临时文件目录中),所以可以看成没有在本地生成文件:

C:\Users\TP\AppData\Local\Temp\tmp2447618135336474361.txt

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • 理解Java设计模式编程中的迪米特原则

    理解Java设计模式编程中的迪米特原则

    这篇文章主要介绍了Java设计模式编程中的迪米特原则,迪米特原则旨在降低类与类之间的耦合,需要的朋友可以参考下
    2016-02-02
  • 使用Mock进行业务逻辑层Service测试详解

    使用Mock进行业务逻辑层Service测试详解

    这篇文章主要介绍了使用Mock进行业务逻辑层Service测试详解,mock是一种模拟对象的技术,用于在测试过程中替代真实的对象,通过mock,我们可以控制被模拟对象的行为和返回值,以便进行更加精确的测试,需要的朋友可以参考下
    2023-08-08
  • springboot 去掉netflix 禁用Eureka的解决方法

    springboot 去掉netflix 禁用Eureka的解决方法

    这篇文章主要介绍了springboot 去掉netflix 禁用Eureka的解决方法,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2023-09-09
  • 关于对Java正则表达式"\\"的理解

    关于对Java正则表达式"\\"的理解

    正则表达式中,\代表转义字符,通常是转义一些特殊字符,下面这篇文章主要给大家介绍了关于对Java正则表达式"\\"的相关理解,需要的朋友可以参考下
    2022-09-09
  • 图解Java排序算法之希尔排序

    图解Java排序算法之希尔排序

    这篇文章主要为大家详细介绍了Java排序算法之希尔排序,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2021-11-11
  • JAVA使用DBUtils操作数据库

    JAVA使用DBUtils操作数据库

    这篇文章主要介绍了JAVA使用DBUtils操作数据库的相关资料,文中示例代码非常详细,帮助大家学习JAVA,感兴趣的朋友可以了解下
    2020-07-07
  • Spring中依赖注入(DI)几种方式解读

    Spring中依赖注入(DI)几种方式解读

    这篇文章主要介绍了Spring中依赖注入(DI)几种方式解读,构造器依赖注入通过容器触发一个类的构造器来实现的,该类有一系列参数,每个参数代表一个对其他类的依赖,需要的朋友可以参考下
    2024-01-01
  • 详解Java中的实例初始化块(IIB)

    详解Java中的实例初始化块(IIB)

    在本篇文章里我们针对Java中的实例初始化块(IIB)做想详细分析,有需要的朋友们可以跟着学习参考下。
    2018-10-10
  • SpringBoot开发实战系列之动态定时任务

    SpringBoot开发实战系列之动态定时任务

    在我们日常的开发中,很多时候,定时任务都不是写死的,而是写到数据库中,从而实现定时任务的动态配置,下面这篇文章主要给大家介绍了关于SpringBoot开发实战系列之动态定时任务的相关资料,需要的朋友可以参考下
    2021-08-08
  • Java线程同步、同步方法实例详解

    Java线程同步、同步方法实例详解

    本篇文章主要通过实例介绍了Java线程:线程的同步-同步方法,需要的朋友可以参考下
    2017-04-04

最新评论