找不到.csv文件

时间:2019-11-27 14:51:55

标签: 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")

但是当我运行Labyrinthe.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

我翻译了一下,因为它是法文

当我将labyrinthe1.csv文件放入IP1-Java文件夹中时 它工作正常, 但这会在我的文件中造成混乱 所以我必须把与此程序相关的所有内容都放入TP10文件夹中 我尝试了这个:

-IP1-Java ( workspace folder)
  -TP10 (program main folder)
      - Labyrinthe1.csv  (the file i have to "load")
      -aaa 
          - Labyrinthe.java (main program)

我在TP10中创建了一个名为“ aaa”的文件,并将其放置在Labyrinthe.java中 文件是,但是那也没有用。

我必须指定程序中没有问题,它是由我的老师编码的,当我在学校的计算机上尝试该程序时一切正常。 我什至从文件夹名称中删除了所有空格,以防万一这是问题所在

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

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;
}

3 个答案:

答案 0 :(得分:0)

您正在寻找的文件看起来像是Labyrinthe1.csv,但是在您的例外情况下,正在寻找的文件被称为labyrinthe1.csv

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

答案 1 :(得分:0)

我认为,如果文件与主类(程序主文件夹)位于同一位置,并且这是一个结构为src/main/java的java项目,则变量nomFichier应该类似于{ {1}}

答案 2 :(得分:0)

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

  
      
  • src:根源文件夹      
        
    • main:主源文件夹      
          
      • java:按包分类的java来源
      •   
      • 资源:不同类中使用的资源文件
      •   
    •   
    • test:测试源文件夹      
          
      • java:使用相同的包分类用于测试 src / main / java 类的Java源
      •   
      • 资源:测试资源文件
      •   
    •   
  •   
  • 目标:java编译的类
  •   

在您的情况下,您会遇到类似的情况:

  
      
  • src      
        
    • 主要      
          
      • java      
            
        • ip1.tp10.Labyrinthe :包含您的方法 chargeLabyrinthe
        • 的Java源   
      •   
    •   
    • 测试      
          
      • java      
            
        • ip1.tp10.LabyrintheTest :允许测试您的 Labyrinthe 对象的Java源。
        •   
      •   
      • 资源      
            
        • tp10 / Labyrinthe1.csv :用于测试范围的CSV文件。
        •   
      •   
    •   
  •   

通过这种结构,您应该能够使用参数“ tp10 / Labyrinthe1.csv”从 LabyrintheTest 类加载资源文件 Labyrinthe1.csv ”。

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