Java 利用newOutputStream方法定义文件位置

Java 利用newOutputStream方法定义文件位置,java,fileoutputstream,opencsv,Java,Fileoutputstream,Opencsv,以下代码在CSV文件创建方面运行良好(仅在下面显示相关代码): 现在,让我们假设我想为它创建一个zip文件,我应该如何使用这一行中的dir变量(我在上面的场景中使用了该变量)FileOutputStream fos=newfileoutputstream(“your_files.zip”)下面的代码 我的意思是,我必须定义以下内容: Path dir = Paths.get("/srv/custom_users", userName); Files.createDirectories(dir);

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

现在,让我们假设我想为它创建一个zip文件,我应该如何使用这一行中的
dir
变量(我在上面的场景中使用了该变量)
FileOutputStream fos=newfileoutputstream(“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();
如果我继续使用
Files
类的
newOutputstream
,它可能如下所示:

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); 

您不需要FileOutputStream。一点也不

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

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

令人惊叹的。成功了!!非常感谢!顺便问一下,为什么不使用
FileOutputstream
而只使用
OutputStream
。你能详细说明一下吗?谢谢。成功了!!非常感谢!顺便问一下,为什么不使用
FileOutputstream
而只使用
OutputStream
。你能详细说明一下吗?谢谢