尝试使用扫描程序读取a.txt文件,但不断获取FileNotFoundException

时间:2014-12-05 10:28:14

标签: java java.util.scanner filenotfoundexception readfile

我一直在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);
}
}

2 个答案:

答案 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中类的命名约定是名称应以大写字母开头。