【问题标题】:how to write csv file in google app by using java如何使用java在谷歌应用程序中写入csv文件
【发布时间】:2012-12-10 18:56:31
【问题描述】:

我目前正在谷歌 appengine 上开发一个用 Java 完成的项目。我有超过 2000 条记录

Appengine 不允许存储文件,因此无法使用任何磁盘上的表示对象。其中一些包括 File 类。

我想写数据并导出到几个csv文件,用户下载。

如何在不使用任何 File 类的情况下做到这一点?文件处理经验不是很丰富,希望大家多多指教。

谢谢。

【问题讨论】:

    标签: java google-app-engine csv


    【解决方案1】:

    只需使用 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的信息

    【讨论】:

    • 您好,感谢您的重播。我是谷歌应用程序的新手,请告诉我如何将 csv 添加到缓冲区,在写入 csv 文件后我想下载该文件我该怎么做
    • 感谢重播,我将数据添加到 StringBuffer,但我在写入文件后创建文件的地方我想下载文件。请帮助我
    【解决方案2】:

    您可以使用字节数组、字符串和流将数据存储在内存中。例如,

    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() 作为流提供。这里给出了一些例子:Implementing a simple file download servlet

    【讨论】:

    • 在这里我给出文件名。我是谷歌应用程序和 java 的新手
    【解决方案3】:

    您可以在 Google App Engine 中使用 OpenCSV 库。

    【讨论】:

    • 嗨,感谢您使用 OpenCSV 重播我可以在谷歌应用程序中编写 csv 文件吗?
    • 您可以将其保存在 BlobStore 中。
    • ya ..感谢重播意味着我想从数据库中读取用户信息并将信息存储在 csv 文件的 for 中。现在我如何创建 csv 文件意味着谷歌应用程序不允许创建自己的文件。
    • ya.thanks for replay。我想将用户信息存储在 csv 文件中,但在谷歌应用程序中我们无法编写自己的文件。现在我该如何编写 csv 文件
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-11-11
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多