当前位置: 首页 > 面试题库 >

如何将InputStream转换为虚拟文件

沙小白
2023-03-14
问题内容

我有一个方法,期望输入变量之一是java.io.File类型,但是我得到的只是InputStream。另外,我无法更改方法的签名。

如何将InputStream转换为File类型,而无需实际将文件写入文件系统?


问题答案:

这样的事情应该起作用。请注意,为简单起见,我使用了Java 7功能(尝试使用可关闭资源的块)和Apache commons-
io的IOUtils。如果您不能使用它们,那将需要更长的时间,但是是相同的想法。

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 {

    public static final String PREFIX = "stream2file";
    public static final String SUFFIX = ".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;
    }

}


 类似资料:
  • 问题内容: 我有将ZipInputSream转换为byte []的代码,但我不知道如何将其转换为inputstream。 问题答案: 这是我解决此问题的方法。现在,我可以将单个文件从ZipInputStream作为InputStream传输到内存。

  • 问题内容: 我正处于开发阶段,在那里我有两个模块,从一个模块我得到的输出为a OutputStream,第二个模块仅接受InputStream。您是否知道如何转换OutputStream为InputStream可以连接这两部分的方式(反之亦然,我是说真的) 谢谢 问题答案: 是您向其中写入数据的地方。如果某个模块公开了,则期望在另一端读取一些内容。 另一方面,暴露出的信息表示您需要侦听此流,并且会

  • 问题内容: 我正在研究一个Java Web应用程序,其中文件将存储在数据库中。最初,我们只需调用结果集即可检索数据库中已有的文件: 然后使用显而易见的构造函数将此字节数组转换为: 直到我们开始尝试存储和检索更大的文件之前,这一直很好。将整个文件内容转储到字节数组中,然后再从中构建出来,仅需要太多内存。 我的直接想法是使用来检索数据库中的数据流,并以某种内存有效的方式将其转换为数据流。不幸的是,似乎

  • 问题内容: 我正在使用servlet上传图像。为了执行调整大小的操作,我将InputStream转换为BufferedImage。现在我想将其保存在mongoDB中。因为据我所知,我是mongoDB的新手,所以GridFS采用InputStream。 那么,有什么方法可以将BufferedImage转换为InputStream吗? 问题答案: 您需要使用该类将BufferedImage保存为,然后

  • 问题内容: 如何将java对象转换为InputStream? 问题答案: 您可以使用ObjectOutputStream 您将对象(以下代码中的obj)写入ObjectOutputStream,要转换为输入流的对象必须实现Serializable。

  • 我在/raw文件夹中有一个名为“max_easy.txt”的txt文件,在这个文件中写了一个数字,在本例中为“0”...我想要一个以0作为Int值的var,我怎么做? 我猜这行给了我一个字符串值,我怎么转换它?