我目前正在尝试将图像文件复制到现有的zip文件中(如附加文件)。但是输出为空(意味着:该文件实际上甚至存在-仅显示为占用0个字节,并且无法打开/提取)。
这是我的代码示例:
Map<String, String> env = new HashMap<>();
env.put("create", "true");
Path path = Paths.get("countMap.zip");
java.net.URI uri = java.net.URI.create("jar:" + path.toUri());
try (FileSystem fs = FileSystems.newFileSystem(uri, env)) {
Path nf = fs.getPath("mario.png");
try (OutputStream zos = Files.newOutputStream(nf, StandardOpenOption.CREATE)) {
Files.createFile(nf, null);
Files.copy(nf, zos);
} catch (Exception e) {
e.printStackTrace();
}
}
编辑:
当我调试Java组件时,看起来一切都会好起来的。我想知道将临时文件复制到最终文件目的地是否会出现问题。
好,我有问题。
Files.copy(nf, zos);
根本不起作用。所以我尝试使用流:
final byte[] bytes = new byte[1024];
int read = 0;
while ((read = inputStream.read(bytes)) != -1) {
zos.write(bytes, 0, read);
}
zos.close();
效果不佳。但有趣的是(我对众议院MD很明智:-))我刚遇到一个有类似问题的朋友。在他的情况下,文件编写器未输出任何内容-或一半。当然很奇怪。但是他的问题是,他忘记关闭流。
所以我看了看我的代码-一切都很好。但是后来我开始尝试有趣的解决方案,只是删除了close()-并且成功了!当然很奇怪。而且根本无法预料。但是至少我的案子现在已经解决了。有人认为这可能是JAVA中的错误吗?也许知道如何正确举报?
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句