Java сохранить папку ресурсов в папку на диске
В моих ресурсах есть папка, которую я хочу извлечь на диск при первом запуске приложения. У меня есть этот кусок кода, где я пытался скопировать их на диск, но все, что я получаю, это пустые файлы. Папка содержит файлы.gnh. Где я теряю свои байты файла?
public void getTemplates() throws URISyntaxException {
final URL url = TemplateUtils.class.getResource("/templates/");
if (url != null) {
final File dir = new File(url.toURI());
for (final File file : dir.listFiles()) {
try {
final OutputStream outStream = new FileOutputStream(
PathManager.INSTANCE.getRootPath() + file.getName());
final long writtenBytes = Files.copy(file.toPath(), outStream);
LOG.info(writtenBytes);
outStream.flush();
outStream.close();
} catch (final IOException e) {
LOG.error(e.getMessage(), e);
}
}
}
}
LOG.info(записано Bytes) говорит 0
РЕДАКТИРОВАТЬ: Когда я копирую простые текстовые файлы, все работает нормально. Но с этими файлами.gnh больше ничего не работает. Есть ли другой способ извлечь эти файлы на диск?
1 ответ
Решение
У меня есть решение: сначала нужно создать файл для OutputStream, а затем его можно очистить.
final File path = new File(
PathManager.INSTANCE.getRootPath() + "templates");
path.mkdirs();
final File newFile = new File(path.toString()
+ File.separator + file.getName());
newFile.createNewFile();
final OutputStream outStream = new FileOutputStream(newFile);
Files.copy(file.toPath(), outStream);
outStream.flush();
outStream.close();