Java netbeans 8.1:无法识别的文件?

Java netbeans 8.1:无法识别的文件?,java,netbeans,Java,Netbeans,因此,我开发了一个java应用程序,并试图读入该文件,我收到一条错误消息,说configuration.txt文件不存在 以下是文件读取代码: public static void main(String[] args) throws FileNotFoundException { //reading configuration file Scanner readConfigurationFile = new Scanner(new File("configuratio

因此,我开发了一个java应用程序,并试图读入该文件,我收到一条错误消息,说configuration.txt文件不存在

以下是文件读取代码:

    public static void main(String[] args) throws FileNotFoundException {

    //reading configuration file
    Scanner readConfigurationFile = new Scanner(new File("configuration.txt"));
是的,我有导入的必要IO库和实用程序

我把文件移到了任何地方(在包中,或者在项目文件夹中,或者在bin文件夹中,等等),并继续测试,但是它不起作用

它工作的唯一方式是当我将其移动到桌面上,并将桌面上的文件路径放入代码中(因此C:\User\..\configuration.txt)

但这不是我想要的,因为其他人必须在不更改代码的情况下运行它

有什么建议/帮助吗? 我在网上到处找,尝试过不同的方法,但都不管用。有些会使我的代码复杂化,所以我避免了


提前感谢

如果您将其放在软件包文件夹中,则需要其相对路径

以这个结构为例,

  • src
    • 主要
      • 爪哇
        • com
          • 范例
            • Main.java
            • configuration.txt
你可以访问它

new File("src/main/java/com/example/configuration.txt");

即使您从
Main.java

访问它,如果您将它放在软件包文件夹中,您也需要它的相对路径

以这个结构为例,

  • src
    • 主要
      • 爪哇
        • com
          • 范例
            • Main.java
            • configuration.txt
你可以访问它

new File("src/main/java/com/example/configuration.txt");

即使您从
Main.java
访问它,如果您的配置文件打算在应用程序内部(它将部署在jar或war中),您也不应该将其作为
文件使用,而是作为
资源使用

假设它的相对路径是
org/example/files/configuration.txt
(*)。您可以这样使用它:

InputStream is = getClass().getClassLoader().loadRessourceAsStream(
    "org/example/files/configuration.txt");
Scanner readConfigurationFile = new Scanner(is);

(*)如果您使用maven,它可能是
src/main/resources/org/…
,如果您使用ant或EclipseNotive编译器,它可能是
src/org/…

如果您的配置文件打算在应用程序内部(它将部署在jar或war内部)您不应将其用作
文件,而应将其用作
资源

假设它的相对路径是
org/example/files/configuration.txt
(*)。您可以这样使用它:

InputStream is = getClass().getClassLoader().loadRessourceAsStream(
    "org/example/files/configuration.txt");
Scanner readConfigurationFile = new Scanner(is);

(*)如果使用maven,它可能是
src/main/resources/org/…
,如果使用ant或EclipseNotive编译器,它可能是
src/org/…

这应该告诉你它的位置:
System.out.println(新文件(“configuration.txt”).getAbsolutePath()@shmosel谢谢!!!lol它应该在项目的第一个文件夹中,在那里构建和清单是这样的:这应该告诉你它的位置:
System.out.println(新文件(“configuration.txt”).getAbsolutePath()@shmosel谢谢!!!lol它应该直接进入项目的第一个文件夹中,在那里构建和清单是正确的,但是您应该警告,如果以后使用jar或war,访问源代码树中的文件将导致问题…@SergeBallesta I would,但我不知道你指的是什么:)我只是给了他一个例子,让他不要尝试使用类文件的相对路径谢谢你提供的信息,我知道它应该放在第一个文件夹中正确,但您应该警告,如果以后使用jar或war,访问源代码树中的文件将导致问题…@SergeBallesta我会的,但我不知道您更准确地指的是什么:)我只是给了他一个示例,让他不要尝试使用类文件的相对路径谢谢提供的信息,我发现它应该放在第一个文件夹中谢谢你的信息:)你可以把它作为configuration.txt(不需要目录路径)保存,只要你把它放在从netbeans文件夹访问的第一个项目文件夹下。谢谢你的信息:)你可以把它作为configuration.txt保存(不需要目录路径)只要把它放在从netbeans文件夹访问的第一个项目文件夹下