有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java仅使用流创建csv或简单文本文件

我将使用jsf Primefaces下载按钮下载csv文件。 该文件不存在,无法使用导出实用程序,因为我需要在运行时生成csv

这是一次有效的测试尝试:

    private StreamedContent file;

    /** Getter,setter...*/
    public void FileDownloadBean() {
        InputStream stream = this.getClass().getResourceAsStream("test.csv");
          file = new DefaultStreamedContent(stream, "application/csv", "test.csv"); 
    }

我使用Primefaces的事实在这里并不重要,我想要实现的是构建任何类型的文件,最好是CSV,而不在文件系统中实际保存(临时)文件

我想使用流附加我的数据,这样我就可以轻松地附加和操作Strings、bytes和image文件

有什么想法吗?也许是一个缓冲区

提前谢谢


共 (2) 个答案

  1. # 1 楼答案

    就我理解你的问题而言,以下答案“也许”能解决你的问题:

    public class InMemoryStreaming {
    private StringBuilder sb = new StringBuilder();
    
    public void FileDownloadBean() throws IOException {
        InputStream csvStream = this.getClass().getResourceAsStream("test.csv");
        try (BufferedReader br = new BufferedReader(new InputStreamReader(
                csvStream))) {
            // on every method call the StringBuilder is appended
            sb.append(br.lines().collect(
                    Collectors.joining(System.lineSeparator())));
            }
        }
    }
    

    如果要将StringBuilder序列化为真实文件,可以使用适当的编写器

  2. # 2 楼答案

    我认为如果不创建文件,就不能创建文件

    使用StringStringBufferStringBuilder或其他变量将文件的内容存储在内存中

    编辑:显然,也有指向内存的流(?)ByteArrayInputStreamByteArrayOutputStream