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();
Другие вопросы по тегам