我一直在java中获取FileNotFoundException。我的文件名与.txt扩展名完全相同,.txt文件与我的.java文件一起位于同一文件夹中。我不确定这里有什么,我尝试了很多东西。
这是我的主要类,我试图通过调用命令类来打印每个命令和索引号。
public class mainClass {
public static void main(String[] args) throws Exception {
commands fileCommands = new commands();
for (int i = 0; i >= fileCommands.getLength() - 1; i++) {
System.out.println("" + i + ": " + fileCommands.getCommand(i));
}
这是命令类。
import java.io.File;
import java.io.FileNotFoundException;
import java.util.ArrayList;
import java.util.Scanner;
public class commands {
ArrayList<String> commandList;
public Commands() throws Exception {
this.commandList = new ArrayList<>();
try {
Scanner s = new Scanner(new File("commands.txt"));
while(s.hasNextLine()) {
commandList.add(s.nextLine());
}
} catch (FileNotFoundException ex) {
System.out.println(ex);
}
}
public int getLength() {
return commandList.size();
}
public String getCommand(int pIndex) throws IllegalArgumentException {
return commandList.get(pIndex);
}
}
答案 0 :(得分:0)
编译并运行时,.java
文件变为.class
个文件,我很确定它们的来源位于不同的位置,因此您仍需要指定文本文件的位置:
Scanner s = new Scanner(new File("path-to-text-file/commands.txt"));
答案 1 :(得分:0)
你应该避免加载这样的文件。这不适用于各种场景。
改为实例化Scanner
:
Scanner s = new Scanner(commands.class.getResourceAsStream("commands.txt"));
请注意:Java中类的命名约定是名称应以大写字母开头。