Java将资源文件夹保存到磁盘文件夹

时间:2014-11-24 15:21:59

标签: java file copy outputstream

我的Ressources中有一个文件夹,我希望在第一次启动应用程序时将其提取到磁盘。我确实在这里有代码的安静,我试图将它们复制到磁盘,但我得到的只是空文件。该文件夹包含.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(writtenBytes)表示0

编辑: 当我复制简单的文本文件时,一切正常。但是那些.gnh文件不再有用了。还有另一种方法可以将这些文件提取到磁盘吗?

1 个答案:

答案 0 :(得分:0)

我得到了解决方案:您需要先为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();