我想要做的是,当用户选择一个图像时,必须将该图像复制到特定文件夹,然后使用该图像。
这是我用来复制图像的:
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)
最佳答案
我解决了这个问题,所以为了以防万一其他人遇到这个问题,这就是我所做的:
替换
Toolkit.getDefaultToolkit().getImage(getClass().getResource("/bgs/img.png"));
与
ImageIO.read(new File("bgs/img.png"));
小心路径
"/bgs/img.png"
"bgs/img.png"
关于java NullPointerException 存在图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32917154/