ImageIO无法读取输入文件

s.a*_*lem 10 java eclipse javax.imageio

public static void imRes(String pat) {
        try {
            BufferedImage bckimg = ImageIO.read(new File("c:/s/deneme.jpg"));
            File s = new File(pat);
            BufferedImage im = ImageIO.read(s);
            BufferedImage im1 = resIm(im);
            BufferedImage finIm = mergIm(im1, bckimg);
            ImageIO.write(finIm, "jpg", new File("c:/s/deneme1.jpg"));
        } catch (IOException e) {

            e.printStackTrace();
        }
Run Code Online (Sandbox Code Playgroud)

这是我的第一篇文章,如果我做错了,请原谅.此代码正常运行,直到我尝试从源包中读取图像.但现在它无法读取任何图像.我究竟做错了什么?或者它是关于日食的东西?

例外:

javax.imageio.IIOException: Can't read input file!
    at javax.imageio.ImageIO.read(Unknown Source)
    at imRe.imRes(imRe.java:12)
    at imReTest.main(imReTest.java:6)
Run Code Online (Sandbox Code Playgroud)

谢谢...

Bru*_*ira 15

改变/\,如果你使用的是Windows.

更具跨平台的方法将是替代方案

C:for File.listRoots()[0]and every /for File.separator.

阅读有关File api文档的更多信息

编辑

(我没看过这行,对不起)

此代码正常运行,直到我尝试从源包中读取图像

为了从jar包中获取文件,必须使用该getClass().getResource()方法.

例:

application-package:
|-Main.java
|-resources
  |-image.jpg
Run Code Online (Sandbox Code Playgroud)

对于上面的目录结构:

BufferedImage im = ImageIO.read(new File(getClass().getResource("/resources/image.jpg").toURI()));
Run Code Online (Sandbox Code Playgroud)

会做的伎俩.

  • `File.separator`,而不是`File.pathSeparator`.路径分隔符用于分隔单个文件或目录,例如在Windows上指定类路径或`%PATH%`变量时(在UNIX上为`$ PATH`). (2认同)