У меня следующий код, работающий нормально с точки зрения создания файла 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-файл для того же самого, как мне использовать переменную dir
(которую я использовал в приведенном выше сценарии) в этой строке FileOutputStream 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
метод класса Files
, это может выглядеть следующим образом:
FileOutputStream fos = new FileOutputStream(Files.newOutputStream(dir));
Это правильный путь?
Мне интересно, куда мне поместить имя zip-файла, то есть your_files.zip
, которое я определил в предыдущей строке кода FileOutputStream("your_files.zip");
?