Java IOException:Can';无法读取输入文件。我不能';无法使用不同的路径找到解决方案,即使是手动

Java IOException:Can';无法读取输入文件。我不能';无法使用不同的路径找到解决方案,即使是手动,java,image,path,io,Java,Image,Path,Io,如何解决此错误?我无法找到使用不同路径的解决方案,即使是手动。请解释如何使用绝对路径将图像读入缓冲图像 private BufferedImage[] image = new BufferedImage[9]; private int imageNo = 0; private Boolean draw = false; private int drawType; private String [] realtivePath; private String [] absolutePath; //=

如何解决此错误?我无法找到使用不同路径的解决方案,即使是手动。请解释如何使用绝对路径将图像读入缓冲图像

private BufferedImage[] image = new BufferedImage[9];
private int imageNo = 0;
private Boolean draw = false;
private int drawType;
private String [] realtivePath;
private String [] absolutePath;
//=============================================================================

public DrawPanel() {

    int i,j; 
    absolutePath =  new String[9];
    realtivePath = new String []{"B_Pictures\\Burj Khalifa.jpg", "B_Pictures\\Taipei 101.jpg", "B_Pictures\\Willis Tower.jpg",
        "B_Pictures\\Empire State Building.jpg", "B_Pictures\\Chrysler Building.jpg",
        "B_Pictures\\Woolworth Building.jpg", "B_Pictures\\Met Life Tower.jpg",
        "B_Pictures\\Singer Building.jpg", "B_Pictures\\Philadelphia City Hall.jpg"}; 
    //======================================================================
    for(i = 0;i < 9; i++)
    {
        absolutePath[i] = new File(realtivePath[i]).getAbsolutePath();
        System.out.println("Path is: "+absolutePath[i]);
    }
   //=======================================================================
    try {
        for (j = 0; j < 9; j++) {
            image[j] = ImageIO.read(new File(absolutePath[j])); //<-- can't read absolute path!
        }
    }catch (IOException e) {
        e.printStackTrace();
        //System.out.println("Error reading file");
    }
private BufferedImage[]image=new BufferedImage[9];
私有int imageNo=0;
私有布尔绘制=false;
私有int-draw类型;
私有字符串[]realtivePath;
私有字符串[]绝对路径;
//=============================================================================
公共事务委员会(){
int i,j;
绝对路径=新字符串[9];
realtivePath=new String[]{“B_Pictures\\Burj Khalifa.jpg”、“B_Pictures\\Taipei 101.jpg”、“B_Pictures\\Willis Tower.jpg”,
“B_Pictures\\Empire State Building.jpg”、“B_Pictures\\Chrysler Building.jpg”,
“B_Pictures\\Woolworth Building.jpg”、“B_Pictures\\Met Life Tower.jpg”,
“B_Pictures\\Singer Building.jpg”、“B_Pictures\\Philadelphia City Hall.jpg”};
//======================================================================
对于(i=0;i<9;i++)
{
absolutePath[i]=新文件(realtivePath[i])。getAbsolutePath();
System.out.println(“路径为:“+absolutePath[i]);
}
//=======================================================================
试一试{
对于(j=0;j<9;j++){

image[j]=ImageIO.read(新文件(绝对路径[j]);//显然,您的绝对路径不正确。您正在根据运行java应用程序的目录解析相对路径。显然,这些是错误的相对路径(或者您在不同的位置运行应用程序)

更新:

作为澄清,
File.getAbsolutePath()
将相对路径设置为绝对路径(如果它当前是相对的)。这纯粹是文本更改,并不意味着结果绝对路径的任何有效性。例如,如果您有一个相对路径“foo/bar”,并且根据当前目录将其设置为绝对路径“/blah”,则生成的绝对路径为“/blah/foo/bar”。这并不意味着“/blah/foo/bar”是有效路径

以下是检查代码的简单方法:

System.out.println("Path is: "+absolutePath[i] + ", isReadable " + new File(absolutePath[i]).canRead());

显然,您的绝对路径不正确。您正在根据运行java应用程序的目录解析相对路径。显然,这些是错误的相对路径(或者您在不同的位置运行应用程序)

更新:

作为澄清,
File.getAbsolutePath()
将相对路径设置为绝对路径(如果它当前是相对的)。这纯粹是文本更改,并不意味着结果绝对路径的任何有效性。例如,如果您有一个相对路径“foo/bar”,并且根据当前目录将其设置为绝对路径“/blah”,则生成的绝对路径为“/blah/foo/bar”。这并不意味着“/blah/foo/bar”是有效路径

以下是检查代码的简单方法:

System.out.println("Path is: "+absolutePath[i] + ", isReadable " + new File(absolutePath[i]).canRead());


与其重新搜索,不如更新您的问题并引起注意。那么我是否应该删除此问题?谢谢您的建议。您至少应该包括您得到的错误以及System.out.println正在创建的输出。@Edi:不,暂时保留它。但请记住:)这是关于文件路径的输出的第一行:路径是:C:\Users\foo\Desktop\Sorting\u Ass4\B\u Pictures\Burj Khalifa.jpg和发生的错误:javax.imageio.IIOException:无法读取输入文件!在GUI.DrawPanel的javax.imageio.imageio.read(imageio.java:1301)(DrawPanel.java:49)在GUI.GUI\u控件的GUI\u.Main.Main(Main.java:15)的构建成功(总时间:5秒)谢谢,我会记住的。与其重新搜索,不如更新你的问题并引起一些注意。那么我应该删除这个吗?谢谢你的建议。你至少应该包括你得到的错误以及你的System.out.println正在创建的输出。@Edi:不,暂时不做。但是请记住:)这是一个fi关于文件路径的输出的第一行:路径是:C:\Users\foo\Desktop\Sorting_Ass4\B_Pictures\Burj Khalifa.jpg,发生了一个错误:javax.imageio.IIOException:无法读取输入文件!在javax.imageio.imageio.read(imageio.java:1301)在GUI.DrawPanel.(DrawPanel.java:49)在GUI.GUI\u控件上。(GUI\u Control.java:36)在GUI.Main.Main(Main.java:15)构建成功(总时间:5秒)谢谢,我会记住的。你能根据解决方案解释一下吗。它们是由返回绝对路径的方法生成的,怎么可能不正确呢?我提供了第一个相对路径字符串,即:B_Pictures\Burj Khalifa.jpg,它是java netbeans中的一个包,包含所有jpeg图像。基于他的相对路径我用过getAbsolutePath()获取绝对路径的方法,例如:C:\Users\foo\Desktop\Sorting\u Ass4\B\u Pictures\Burj Khalifa.jpg。即使不获取绝对路径,而是使用转义序列硬编码,它也不起作用。我的绝对路径是什么?@Edi-因为我不在您的计算机上,我无法告诉您正确的路径是什么。o一旦你弄明白了,你的代码就应该开始工作了。它在每种情况下都会返回false。我知道你会这么说:)你能根据解决方案解释一下吗。它们怎么可能是不正确的,因为它们是由返回绝对路径的方法生成的?我提供了第一个带有相对路径的字符串,即:B_Pictures\Burj Khalifa.jpg,这是一个packa包含所有jpeg图像的java netbeans中的ge。基于此相对路径,我使用了getAbsolutePath()获取绝对路径的方法,例如:C:\Users\foo\Desktop\Sorting\u Ass4\B\u Pictures\Burj Khalifa.jpg。即使不获取绝对路径,而是使用转义序列硬编码,它也不起作用。我的绝对路径是什么?@Edi-因为我不在您的计算机上,我无法告诉您什么是绝对路径