所以我的问题是我需要从程序中加载.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;
}
答案 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 ”。
我希望这会对您有所帮助。