从java方法返回一个文件
Posted
技术标签:
【中文标题】从java方法返回一个文件【英文标题】:Return a file from java method 【发布时间】:2017-07-03 15:44:50 【问题描述】:我创建了一个接受 JSON 响应并将数据导出到 Excel 和 CSV 文件的方法。我希望该方法接受文件名作为参数,并从该方法返回 File/FileHandle 对象。
有人可以帮我解决这个问题吗?
我正在使用以下代码从 creteExcel 和 createCSV 导出数据。
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)。
我想知道,如何接受文件名作为createExcel
和createCSV
方法的参数,并返回包含数据的同名文件?
【问题讨论】:
你不能改变方法的签名 - 返回类型和参数吗? Which is better - using String or File as parameter type for methods that take filenames的可能重复 对于 Excel:我可以将文件名作为字符串参数发送,但我使用 FileOutputStream 来写入数据。那么我可以直接从 mthis 方法返回 FileOutputStream,还是需要将其转换为 File 对象。如果我需要转换,那么如何转换? 对于 CSV:我正在通过 fileWriter 写入数据。我可以直接返回fileWriter,还是需要将其转换为文件对象。如果是,那我们如何转换呢? 【参考方案1】:我希望方法接受文件名作为参数:您可以发送String
、File
对象或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方法返回一个文件的主要内容,如果未能解决你的问题,请参考以下文章