Java can';找不到.csv文件

Java can';找不到.csv文件,java,file,csv,load,Java,File,Csv,Load,所以我的问题是我需要从我的程序中加载一个.csv文件 这是我的文件夹结构 -IP1-Java ( workspace folder) -TP10 (program main folder) - Labyrinthe.java (main program) - Labyrinthe1.csv (the file i have to "load") 但当我运行迷宫.java时,我发现: java.io.FileNotFoundException: labyrinthe

所以我的问题是我需要从我的程序中加载一个
.csv
文件 这是我的文件夹结构

-IP1-Java ( workspace folder)
  -TP10 (program main folder)
      - Labyrinthe.java (main program)
      - Labyrinthe1.csv  (the file i have to "load")
但当我运行迷宫.java时,我发现:

java.io.FileNotFoundException: labyrinthe1.csv (The specified file can not be found)
    at java.io.FileInputStream.open0(Native Method)
    at java.io.FileInputStream.open(FileInputStream.java:195)
    at java.io.FileInputStream.<init>(FileInputStream.java:138)
    at java.util.Scanner.<init>(Scanner.java:611)
    at Labyrinthe.chargeLabyrinthe(Labyrinthe.java:11)
    at Labyrinthe.main(Labyrinthe.java:143)
D:\Bureau\Cours\Licence_Informatique_Diderot\Semestre-1\IP1-Java\labyrinthe1.csv
我在TP10中创建了一个名为“aaa”的文件,并将迷宫放在这里 文件是,但也没有工作

我必须说明我的程序没有问题,它是由我的老师编写的,当我在学校的电脑上试用时,一切都正常。 我甚至删除了文件夹名称中的所有空格,以防出现问题

我放置了加载文件的函数 正如我已经说过的,它是由我的老师编码的,而且它是有效的

public static int[][]chargeLabyrinthe(final String nomFichier) {
    int[][] labyrinthe = {};
    try {
        Scanner sc = new Scanner(new File(nomFichier)).useDelimiter("\n");
        int c = 0;
        // On compte le nombre de lignes
        while (sc.hasNext()) {
            c = c + 1;
            final String tmp = sc.next();
        }
        labyrinthe = new int[c][];
        sc = new Scanner(new File(nomFichier)).useDelimiter("\n");
        int i = 0;
        while (sc.hasNext()) {
            final String ligne = sc.next();
            final String[] splitLigne = ligne.split(",");
            labyrinthe[i] = new int[splitLigne.length];
            for (int j = 0; j < splitLigne.length; j = j + 1) {
                labyrinthe[i][j] = Integer.parseInt(splitLigne[j]);
            }
            i = i + 1;
        }

    } catch (final Exception e) {
        System.out.println("Probleme dans la lecture du fichier " + nomFichier);
        e.printStackTrace();
    }
    return labyrinthe;
}
public static int[]charge迷宫(最终字符串名称){
int[][]迷宫={};
试一试{
Scanner sc=new Scanner(新文件(nomFichier)).useDelimiter(“\n”);
int c=0;
//关于完整的名称对齐
while(sc.hasNext()){
c=c+1;
最终字符串tmp=sc.next();
}
迷宫=新整数[c][];
sc=新扫描仪(新文件(nomFichier)).useDelimiter(“\n”);
int i=0;
while(sc.hasNext()){
最终字符串ligne=sc.next();
最后一个字符串[]splitLigne=ligne.split(“,”);
迷宫[i]=新整数[SplitAlign.length];
对于(int j=0;j
看起来您要查找的文件的编写方式类似于
迷宫1.csv
,但在您的例外情况下,它要查找的文件名为
迷宫1.csv


你确定使用了正确的文件名吗?

我认为如果文件与主类(程序主文件夹)位于同一位置,并且这是一个java项目,其结构为
src/main/java
,那么变量
nomFichier
应该类似于
src/main/java/迷宫1.csv

,您可以使用标准的Maven项目结构(Maven是一种项目管理工具):

  • src:根源文件夹
    • 主:主源文件夹
      • java:按包分类的java源代码
      • 资源:不同类中使用的资源文件
    • 测试:测试源文件夹
      • java:用于测试src/main/java类的java源代码,使用相同的包分类
      • 资源:测试资源文件
  • 目标:java编译类
在你的情况下,你会有这样的东西:

  • src
    • 主要
      • 爪哇
        • ip1.tp10.迷宫:包含方法Charge迷宫的java源代码
    • 试验
      • 爪哇
        • ip1.tp10.迷宫测试:允许测试迷宫对象的java源代码
      • 资源
        • tp10/迷宫1.csv:用于测试范围的csv文件
使用这种结构,您应该能够使用参数“tp10/迷宫1.csv”从迷宫测试类加载资源文件迷宫1.csv


我希望这能对您有所帮助。

nomFichier变量中包含的字符串是什么?是的,我确定,我甚至尝试了“迷宫1.csv”,但没有成功。对不起,我不太理解您所说的“结构化项目”我只有一个文件,其中有.java和.csv文件,我没有任何src文件。这是一个公共的地方,我们可以查看项目的结构吗?
public static int[][]chargeLabyrinthe(final String nomFichier) {
    int[][] labyrinthe = {};
    try {
        Scanner sc = new Scanner(new File(nomFichier)).useDelimiter("\n");
        int c = 0;
        // On compte le nombre de lignes
        while (sc.hasNext()) {
            c = c + 1;
            final String tmp = sc.next();
        }
        labyrinthe = new int[c][];
        sc = new Scanner(new File(nomFichier)).useDelimiter("\n");
        int i = 0;
        while (sc.hasNext()) {
            final String ligne = sc.next();
            final String[] splitLigne = ligne.split(",");
            labyrinthe[i] = new int[splitLigne.length];
            for (int j = 0; j < splitLigne.length; j = j + 1) {
                labyrinthe[i][j] = Integer.parseInt(splitLigne[j]);
            }
            i = i + 1;
        }

    } catch (final Exception e) {
        System.out.println("Probleme dans la lecture du fichier " + nomFichier);
        e.printStackTrace();
    }
    return labyrinthe;
}