java - 使用 newOutputStream 方法定义文件位置

标签 java fileoutputstream opencsv

我的以下代码在 CSV 文件创建方面运行良好(仅在下面显示相关代码):

rsCompany = pstmtCompany.executeQuery();
Path dir = Paths.get("/srv/custom_users", userName);
Files.createDirectories(dir);

Path filecompany = dir.resolve("company_custom_file_" + unixTimestamp + ".csv");
    try (CSVWriter writer = new CSVWriter(Files.newBufferedWriter(filecompany))) {
            writer.writeAll(rsCompany, true);
  }

现在,假设我想为此创建一个 zip 文件,我应该如何在这一行 FileOutputStream 中使用 dir 变量(我在上面的场景中使用) fos = new FileOutputStream("your_files.zip"); 下面的代码?

我的意思是,我必须定义以下内容:

Path dir = Paths.get("/srv/custom_users", userName);
Files.createDirectories(dir);

FileOutputStream fos = new FileOutputStream("your_files.zip");
BufferedOutputStream bos = new BufferedOutputStream(fos);
ZipOutputStream zos = new ZipOutputStream(bos); 


ZipEntry entry = new ZipEntry(file.getFileName().toString());
zos.putNextEntry(entry);
try (CSVWriter writer = new CSVWriter(new OutputStreamWriter(zos,StandardCharsets.UTF_8)))) {
       writer.writeAll(rsDemo, true);
       writer.flush();
       zos.closeEntry();
}
zos.close();

如果我继续使用newOutputstream method Files 类,它可能如下所示:

FileOutputStream fos = new FileOutputStream(Files.newOutputStream(dir)); 

这是正确的做法吗?

我想知道,我应该在哪里放置 zip 文件的名称,我的意思是,我在上一行代码中定义的 your_files.zip FileOutputStream("your_files.zip “);

最佳答案

您不需要 FileOutputStream。完全没有。

您只需要一个 OutputStream,这就是 Files.newOutputStream 返回的内容:

OutputStream fos = Files.newOutputStream(dir.resolve("your_files.zip"));
BufferedOutputStream bos = new BufferedOutputStream(fos);
ZipOutputStream zos = new ZipOutputStream(bos); 

关于java - 使用 newOutputStream 方法定义文件位置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56600929/

相关文章:

java - 如何确定字符来源是否来自键盘(读取文件内容时)

java - 解析 CSV 文件并将值存储在变量中

java - 每次附加到 CSV 文件时都会使用不同的编码

java - Arraylist 无法删除重复字符串

java - 使用javac/java手动编译并运行多个包

android - 如何使用android存储访问框架正确覆盖文件内容

java - 保存Android文本文件不会在文件中写入文本

java - 如何再次从 firebase 数据库中请求数据?

java - Spring 将属性文件中的值读取到 @SpringBootApplication 类中

java - 除非我调用 os.close(),否则不会收到文件