我的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文件不再有用了。还有另一种方法可以将这些文件提取到磁盘吗?
答案 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();