如何使用java在谷歌应用程序中编写csv文件
我目前正在开发一个用Java做的项目,在google appengine上。 我有2000以上的记录
Appengine不允许存储文件,因此无法使用任何磁盘表示对象。 其中一些包括File类。
我想写数据并将其导出到几个csv文件,用户下载它。
如果不使用任何文件类,我怎么能这样做? 我在文件处理方面不是很有经验,所以我希望你们能告诉我。
谢谢。
只需使用StringBuffer在内存中生成csv,然后使用StringBuffer.toString().getBytes()
来获取一个字节数组,然后可以将其发送到输出流。
例如,如果在GAE中使用servlet:
protected void doGet(HttpServletRequest req, HttpServletResponse resp) { StringBuffer buffer = new StringBuffer(); buffer.append("header1, header2, header3\n"); buffer.append("row1column1, row1column2, row1column3\n"); buffer.append("row2column1, row2column2, row2column3\n"); // Add more CSV data to the buffer byte[] bytes = buffer.toString().getBytes(); // This will suggest a filename for the browser to use resp.addHeader("Content-Disposition", "attachment; filename=\"myFile.csv\""); resp.getOutputStream().write(bytes, 0, bytes.length); }
有关GAE Servlets的更多信息
有关Content-Disposition的更多信息
您可以使用字节数组,stings和流将数据存储在内存中。 例如,
ByteArrayOutputStream csv = new ByteArrayOutputStream(); PrintStream printer = new PrintStream(csv); printer.println("a;b;c"); printer.println("1;2;3"); printer.close(); csv.close();
然后在您的Servlet中,您可以将csv.toByteArray()作为流提供。 这里给出了一些例子: 实现一个简单的文件下载servlet 。
您可以在Google App Engine中使用OpenCSV库。