我想要做的是当用户选择图像时,必须将此图像复制到特定文件夹,然后使用该图像。
这是我用来复制图像的内容:
Files.copy(
Paths.get("C:/../img.png"),
Paths.get("C:/../src/bgs").resolve(array[array.length-1]),
StandardCopyOption.REPLACE_EXISTING);
工作正常。问题是如果我在这个命令之后立即使用图像,我得到NullPointerException
(如果我在两个命令之间使用类似Thread.sleep(2500)
的东西,我没有这个问题)。所以基本上我需要一种方法来检查文件是否可以使用。
到目前为止,我使用了以下代码
// copy file
File f = new File(new_path);
sout(f.exists());
// use file
Image background = Toolkit.getDefaultToolkit().getImage(
getClass().getResource("/bgs/img.png"));
打印为true,但是当我使用它时,我再次获得NullPointerException
..任何想法?
例外:
Uncaught error fetching image:
java.lang.NullPointerException
at sun.awt.image.URLImageSource.getConnection(URLImageSource.java:115)
at sun.awt.image.URLImageSource.getDecoder(URLImageSource.java:125)
at sun.awt.image.InputStreamImageSource.doFetch(InputStreamImageSource.java:263)
at sun.awt.image.ImageFetcher.fetchloop(ImageFetcher.java:205)
at sun.awt.image.ImageFetcher.run(ImageFetcher.java:169)
答案 0 :(得分:0)
我解决了这个问题,所以万一其他人遇到这个问题,这就是我所做的:
替换
Toolkit.getDefaultToolkit().getImage(getClass().getResource("/bgs/img.png"));
带
ImageIO.read(new File("bgs/img.png"));
小心路径
" /bgs/img.png"
" BGS / img.png"