如何将输入流转换为文件

时间:2018-03-22 11:11:48

标签: java jsp tomcat servlets

我有一个从excel读取数据并将其插入数据库的Web程序。

我从jsp中读取它作为部分,然后将其转换为输入流。

    Part filePart = request.getPart("file");
    InputStream fileContent = filePart.getInputStream();

然后下面的代码用于从中创建工作簿(org.apache.poi.ss.usermodel.Workbook)

    Workbook wb = null;
    Sheet sheet = null;
    try {
        wb = WorkbookFactory.create(fileContent);
        sheet = wb.getSheetAt(0);
    } catch (InvalidFormatException | EncryptedDocumentException | NullPointerException ex) {
        return null;
    }

来自here我发现了这个

  

创建

     

public static Workbook create(java.io.InputStream inp)

     

从给定的InputStream创建适当的HSSFWorkbook / XSSFWorkbook。

     

请注意,使用InputStream的内存占用量比使用File更高。

有没有办法将InputStream转换为File

PartsFile

...谢谢

1 个答案:

答案 0 :(得分:0)

Apache Commons IO

尝试FileUtils
Part filePart = request.getPart("file");
InputStream fileContent = filePart.getInputStream();
File tempFile = File.createTempFile( "myfile", ".xls" )
FileUtils.copyToFile( fileContent, tempFile );

您还需要:

import org.apache.commons.io.FileUtils;

如果你正在使用Maven,那么适当的依赖:

<dependency>
    <groupId>commons-io</groupId>
    <artifactId>commons-io</artifactId>
    <version>2.6</version>
</dependency>