【发布时间】:2017-06-10 16:50:53
【问题描述】:
我创建了一个 Java 程序来创建一个csv 文件,将数据写入其中,然后将其内容发送到服务器。
在本地,一切正常。但问题是我没有对服务器的写入权限(权限被拒绝问题)。
所以,我不能做任何chmod 777。
我正在寻找一种方法来创建csv 文件而不保存到文件系统中。诸如写入流或流之类的东西。我真的不知道它是如何工作的。
请问有什么帮助吗?
这是我到目前为止所做的:
public void exportAllToCSV(@PathVariable int id,HttpServletResponse response) throws IOException
String csvFile="test.csv";
File file = new File("test.csv");
//some treatments to get datas (headers and values)
FileWriter writer = new FileWriter(csvFile);
CsvBuilder.writeLine(writer, headers);
CsvBuilder.writeLine(writer, values);
writer.flush();
writer.close();
response.setContentType("text/csv");
response.setHeader("Content-Disposition", "attachment; filename=" + csvFile);
final BufferedReader br = new BufferedReader(new FileReader(file));
try {
String line;
while ((line = br.readLine()) != null) {
response.getWriter().write(line + "\n");
}
} finally {
br.close();
}
try {
file.delete(); // I delete the file
} catch (Exception e) {
e.printStackTrace();
}
【问题讨论】:
-
为什么需要创建文件?为什么不直接将CSV文件写入
response.getWriter()? -
不保存就无法写入文件。 “保存”意味着您写入文件并关闭它。
-
为什么不在 BufferedReader 中读取文件,将每一行放入 ArrayList 中,然后进行处理?你不会写文件,你会在你的操作内存中工作。不保存就不能“写”,“写”顾名思义就是写入磁盘的方法。
-
@Erwin Bolwidt 我需要创建一个文件来将数据放入其中。
-
@John 为什么?您在请求结束时删除了文件,因此很明显您不需要将其保留在文件中。正如我在第一条评论中所说,您应该将 CSV 文件直接发送到
response.getWriter()
标签: java csv spring-mvc spring-boot inputstream