gpt4 book ai didi

java - 将图像从 JAR 文件复制到外部文件夹

转载 作者:行者123 更新时间:2023-11-30 08:05:02 25 4
gpt4 key购买 nike

我的文件结构:

这是使用 netbeans 项目时的样子:

-src
-images
-*.jpg
-stock
-*.java
-images (exact copy of -images)

这是我的 jar

-jar
-images
-*.jpg
-stock
-*.java
-images (folder is created but files don't get copied)

我的文件 imagesCopy 是我创建的文件,ImagesOrg 是 .jar/src 中的文件

 File imagesCopy = new File("images");
File imagesOrg = new File(URLDecoder.decode(getClass().getResource("/images").getPath()));

if (!imagesCopy.exists()) {
imagesCopy.mkdir();
for(final File child : imagesOrg.listFiles()) {
try{
Files.copy(child.toPath(), Paths.get(imagesCopy.getAbsolutePath()+"/"+child.getName()), REPLACE_EXISTING);
}catch(Exception e){
System.out.println(e);
}
}
}

问题肯定在于:

File imagesOrg = new File(URLDecoder.decode(getClass().getResource("/images").getPath()));

编译时它给了我正确的目录

D:\Code\build\classes\images 

这是正确的目录,但是当从 jar 文件中使用这个程序时,我得到:

D:\Code\dist\file:\D:\Code\dist\egz.jar!\images

我认为它应该是:

D:\Code\dist\egz.jar!\images

没有第一部分

最佳答案

可能最简单的方法是这样的:

public static void main(String[] args) throws URISyntaxException, IOException {
File imagesCopy = new File("C:\\Users\\<YOURNAMEHERE>\\images");

URI uri = ImageCopy.class.getResource("/images").toURI();
if (!uri.toString().startsWith("file:")) {
Map<String, String> env = new HashMap<>();
env.put("create", "true");
FileSystems.newFileSystem(uri, env);
}
Path imagesOrg = Paths.get(uri);
System.out.println(imagesOrg);

if (!imagesCopy.exists()) {
imagesCopy.mkdir();
try(DirectoryStream<Path> paths = Files.newDirectoryStream(imagesOrg)) {
for (final Path child : paths) {
System.out.println(child);
try {
String targetPath = imagesCopy.getAbsolutePath() + File.separator + child.getFileName().toString();
System.out.println(targetPath);
Files.copy(child, Paths.get(targetPath), StandardCopyOption.REPLACE_EXISTING);
} catch (Exception e) {
e.printStackTrace();
}
}
}
}
}

虽然不是很漂亮,但是很管用。如果您有嵌套目录,可能需要修改代码。

请注意,您必须在访问它之前创建文件系统(根据 Oracle Docs )。我不知道为什么这是必需的,但我们开始吧。

我已经对此进行了测试,它会将文件从您的 JAR 中复制到您想要的任何位置。

关于java - 将图像从 JAR 文件复制到外部文件夹,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35255190/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com