{Java}文件存在,但仍显示FileNotFoundException错误

{Java}文件存在,但仍显示FileNotFoundException错误,java,filenotfoundexception,Java,Filenotfoundexception,我需要将一个包含整数的.txt文件读入2d数组,但当我尝试读入该文件时,会出现运行时错误,表示找不到指定的文件。这是我第一次尝试阅读一个文件,所以我只需要知道如何做,但我找不到这个基本的答案 我将名为“num1.txt”的整数文件保存在与java文件相同的文件夹中,因此我想知道我是否不明白eclipse和java是如何决定文件的位置的 public static void main(String[] args) throws FileNotFoundException { int i;

我需要将一个包含整数的.txt文件读入2d数组,但当我尝试读入该文件时,会出现运行时错误,表示找不到指定的文件。这是我第一次尝试阅读一个文件,所以我只需要知道如何做,但我找不到这个基本的答案

我将名为“num1.txt”的整数文件保存在与java文件相同的文件夹中,因此我想知道我是否不明白eclipse和java是如何决定文件的位置的

public static void main(String[] args) throws FileNotFoundException
{
    int i;
    int j;

    i=0;
    j=0;
    int connect4Array[][] = new int[6][7];



    Scanner readFile = new Scanner(new File("num1.txt"));

    while(readFile.hasNextInt())
    {
        for(i=0;i<connect4Array.length;i++)
        {
        connect4Array[i++][j]=readFile.nextInt();
            for(j=0;j<connect4Array[j].length;j++)
            {
            connect4Array[i][j++]=readFile.nextInt();
            }
        }
    }
publicstaticvoidmain(字符串[]args)抛出FileNotFoundException
{
int i;
int j;
i=0;
j=0;
int connect4Array[][]=新int[6][7];
Scanner readFile=新扫描仪(新文件(“num1.txt”);
while(readFile.hasNextInt())
{

对于(i=0;i首先,这不是一个编译错误。这是一个运行时错误。你需要了解其中的区别……并说出正确的话,否则人们不会理解你在说什么


我将名为“num1.txt”的整数文件保存在与java文件相同的文件夹中

问题是您正试图访问正在运行的应用程序的当前目录中的文件…但当前目录不是您认为/希望的位置

那么应用程序的当前目录在哪里呢?这取决于您如何运行应用程序

  • 如果从shell运行java应用程序,则当前目录将默认为shell的当前目录

    您可以在运行
    java…
    之前通过
    cd
    -ing来更改它,我认为您也可以使用
    -Duser.dir=
    指定它

  • 如果您从Eclipse运行java应用程序,那么当前目录将默认为项目目录。这可能与包含源代码的目录不同

    您可以在Eclipse设置中为应用程序的启动器指定不同的当前目录



或者,使用文件的绝对路径,或者将其放入应用程序的JAR文件中,并将其作为“资源”读取。

将文件移动到src文件夹所在的位置

因为默认值是工作区中的项目目录

您可以使用getProperty检查当前目录

字符串CurrentDir=System.getProperty(“user.dir”);
System.out.println(“当前工作目录:“+CurrentDir”);

提供该文件的绝对路径。编译错误或运行时错误?我从eclipse运行java并使用flashdrive作为我的工作区。工作区是E:/JavaStuff,我有“num1.txt”保存在JavaStuff的项目文件夹中。这是不正确的位置吗?在Eclipse中,打开Run-Run配置并选择您的运行配置。然后单击“Arguments”选项卡。在底部,您将看到“working directory”是什么是。此运行配置启动的应用程序中使用的所有相对路径都是相对于该目录的。正如您在shell中从该目录执行java命令一样。