【问题标题】:Java save Resources Folder to disk folderJava将资源文件夹保存到磁盘文件夹
【发布时间】:2014-11-24 15:21:59
【问题描述】:

我的资源中有一个文件夹,我想在应用程序第一次启动时提取到磁盘。我在这里确实有这种和平的代码,我试图将它们复制到磁盘,但我得到的只是空文件。该文件夹包含 .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 文件,什么都没有了。还有其他方法可以将这些文件提取到磁盘吗?

【问题讨论】:

  • fileInfo 到底是什么意思?我此时记录了 file.length() 并且它为零。所以我尝试了一个简单的文本文件,我的方法奏效了。看起来问题出在这个愚蠢的 .gnh FileFormat 上。还有其他方法可以复制/提取文件夹吗?
  • 评论错误。我误解了 。删除了

标签: java file copy outputstream


【解决方案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();

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-04-24
    • 2016-08-06
    • 1970-01-01
    • 2015-06-24
    相关资源
    最近更新 更多