Java 引用文件的工作取决于它是否在Eclipse中运行

Java 引用文件的工作取决于它是否在Eclipse中运行,java,eclipse,file-io,Java,Eclipse,File Io,我有10个.png文件,每个文件上都有一个我在程序中显示的数字。每个都分别被命名为FB_1、FB_2等。当我试图将它们加载到我的Numbers.java文件中时,我在引用它们时遇到了一些问题。我把它们放在一个名为res的文件夹中,这个文件夹和我的src文件夹在同一个目录中。然后我把它们装成这样 for(int i = 0; i < 10; i++) { try { FB_[i] = ImageIO.read(new File("res/FB_" +

我有10个.png文件,每个文件上都有一个我在程序中显示的数字。每个都分别被命名为FB_1、FB_2等。当我试图将它们加载到我的Numbers.java文件中时,我在引用它们时遇到了一些问题。我把它们放在一个名为res的文件夹中,这个文件夹和我的src文件夹在同一个目录中。然后我把它们装成这样

for(int i = 0; i < 10; i++) {
        try {

            FB_[i] = ImageIO.read(new File("res/FB_" + i + ".png"));

        }catch(IOException e) {

            new JFrame("Error 403 - Can't read number Image Files!").
                setVisible(true);
        }
    }
而且成功了。。 我还通过命令提示符运行了它,它再次工作了

现在,当我回到Eclipse并尝试运行新代码时,我开始遇到异常,说它找不到文件。我知道它们与java文件一起保存在默认包中,但我不知道为什么它只能在Eclipse中访问它们


有人知道为什么会这样吗??我是个业余爱好者,对处理文件有点陌生,所以这可能有点愚蠢。

这显然是指定文件正确路径的问题。由于您没有提供文件的完整路径,因此应用程序会尝试在当前工作目录中查找这些文件。此当前工作目录是运行应用程序的位置

如果您仅将文件名设置为here
new File(“FB_”+i+“.png”)
中的文件名,则它将查找文件,而无需转到任何子目录。在你的情况下,它起作用了,因为你是从你拥有文件的同一个地方启动应用程序的

要修复此问题,请始终从同一位置运行应用程序,并将文件放在与应用程序相关的同一位置,或者提供完整路径,例如
C:\files\FB\FB…


另一件你应该考虑的是在Linux上使用的路径分隔符<代码> /<代码>代码,或者在Windows上使用<代码> \/>代码。在Java中,您可以从常量中获取它,也可以使用

文件
创建路径。例如,请参见:.

当我编写“FB_uu“+I+”.png”时,我将文件放在工作目录中(也称为src文件夹和eclipse中的默认包)但它在eclipse中仍然不起作用,我希望它能在任何计算机上运行,不管它最终保存在哪里,所以我不想使用完整路径。可能是因为您和您的朋友使用不同的操作系统,如Windows和OS X,它们有不同的路径分隔符。这不是IDE的问题,甚至不是Java的问题。这与适用于任何文件系统路径的原理相同。它可以是相对的,也可以是绝对的,可以用
`或
/`分隔。因此,当你从任何应用程序或shell访问文件时,你需要根据这些因素确定正确的路径。我知道他在vista上使用windows 7和im,我认为路径分隔符也有帮助,谢谢
FB_[i] = ImageIO.read(new File("FB_" + i + ".png"));