Попытка чтения в файле.txt с помощью сканера, но продолжаю получать FileNotFoundException
Я продолжаю получать FileNotFoundException в Java. У меня есть точное имя файла с расширением.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);
}
}
2 ответа
Вам следует избегать загрузки таких файлов. Это не будет работать в различных сценариях.
Создать экземпляр Scanner
как это вместо этого:
Scanner s = new Scanner(commands.class.getResourceAsStream("commands.txt"));
Еще одно замечание: соглашение об именах для классов в Java заключается в том, что имя должно начинаться с заглавной буквы.
Когда он компилируется и запускается .java
файлы становятся .class
файлы, и я почти уверен, что их источник находится в другом месте, поэтому вам все равно нужно указать местоположение вашего текстового файла:
Scanner s = new Scanner(new File("path-to-text-file/commands.txt"));