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