从java方法返回一个文件

Posted

技术标签:

【中文标题】从java方法返回一个文件【英文标题】:Return a file from java method 【发布时间】:2017-07-03 15:44:50 【问题描述】:

我创建了一个接受 JSON 响应并将数据导出到 Excel 和 CSV 文件的方法。我希望该方法接受文件名作为参数,并从该方法返回 File/FileHandle 对象。

有人可以帮我解决这个问题吗?

我正在使用以下代码从 creteExcelcreateCSV 导出数据。

public void createExcel( PageModel pageModelRequest,PageModel pageModelResponse )
        FileOutputStream outputStream=new FileOutputStream(new File("GridData.xlsx"));
        createGrid(pageModelResponse, sheet, workbook);
        workbook.write(outputStream);
        System.out.println("Excel Written");    
        outputStream.close();
        workbook.close();


public void createCSV(PageModel pageModelRequest,PageModel pageModelResponse)
        String csvFile = "/Users/abhinak4/Desktop/GridData.csv";        
        FileWriter writer = new FileWriter(csvFile);
        createGrid(pageModelRequest, pageModelResponse, writer);

在方法createGrid 中,我正在为excel 创建工作簿,并将数据附加到writer (writer.append)。

我想知道,如何接受文件名作为createExcelcreateCSV 方法的参数,并返回包含数据的同名文件?

【问题讨论】:

你不能改变方法的签名 - 返回类型和参数吗? Which is better - using String or File as parameter type for methods that take filenames的可能重复 对于 Excel:我可以将文件名作为字符串参数发送,但我使用 FileOutputStream 来写入数据。那么我可以直接从 mthis 方法返回 FileOutputStream,还是需要将其转换为 File 对象。如果我需要转换,那么如何转换? 对于 CSV:我正在通过 fileWriter 写入数据。我可以直接返回fileWriter,还是需要将其转换为文件对象。如果是,那我们如何转换呢? 【参考方案1】:

我希望方法接受文件名作为参数:您可以发送StringFile 对象或InputStream - createExcel(PageModel req, PageModel resp, File yourFileObj) 并从方法中返回File对象:签名变为:public File createExcel()

【讨论】:

对于 Excel:我想将文件名作为字符串参数发送,但我正在使用 FileOutputStream 来写入数据。那么我可以直接从 mthis 方法返回 FileOutputStream,还是需要将其转换为 File 对象。如果我需要转换,那怎么做? 对于 CSV:我正在通过 fileWriter 写入数据。我可以直接返回fileWriter,还是需要将其转换为文件对象。如果是,那我们如何转换呢?【参考方案2】:

使用这种方式,你可以得到一个文件对象

   File file = new File(fileName);
   FileOutputStream outputStream = new FileOutputStream(file);
   workBook.write(outputStream);

我的详细解释答案被别人删除了所以我在这里解释一下

【讨论】:

以上是关于从java方法返回一个文件的主要内容,如果未能解决你的问题,请参考以下文章

如何从 Java 方法返回多个对象?

如何使用 Nashorn 从 Java 方法返回真正的 JavaScript 数组?

java创建灯泡类的一道题

是否可以从 Java 中的方法返回多个值? [复制]

如何从 Java 方法返回 2 个值?

在所有线程完成之前从 java 方法返回