简单的java程序不会读取文件

时间:2017-02-01 21:46:52

标签: java filenotfoundexception

我对编程很陌生,在尝试从文本文件中读取数据时遇到了很多麻烦。

  1. 我的第一个问题是尝试为我的文件创建一个新的Scanner对象。我找到了一个未找到的文件"除非我在文件对象之后添加了.getAbsolutePath()。

  2. 现在,我似乎无法从文件中读取任何数据。当我尝试打印文件中的每一行时,我没有输出。

  3. 我认为我只是遗漏了一些非常明显的东西。谁能帮我吗?

    public static void main(String[] args) {
        File inputFile = new File("menu.txt");
        System.out.println("Reading from file" + inputFile);
        Scanner inputScanner = new Scanner(inputFile.getAbsolutePath());
        String answer;
    
        while (inputScanner.hasNextLine()){
            answer = inputScanner.nextLine();
            System.out.println(answer);
    
        }
    }
    
    编辑:我最初将文件对象传递给我的扫描程序对象的创建,但仍然收到错误。

2 个答案:

答案 0 :(得分:0)

您的问题是您尝试使用Scanner从文件中读取数据,而Scanner则用于从给定字符串中读取令牌(例如行)。相反,您应该使用Reader来读取您的文件:

File inputFile = new File("menu.txt");
System.out.println("Reading from file" + inputFile);
BufferedReader inputReader = new BufferedReader(new FileReader(inputFile.getAbsolutePath()));
String answer;

while ((answer = inputReader.readLine()) != null) {
    System.out.println(answer);
}

更新如果你真的想要可以使用扫描程序 - 但是你需要将Path对象传递给构造函数:

File inputFile = new File("menu.txt");
System.out.println("Reading from file" + inputFile);
Scanner inputScanner = new Scanner(inputFile);
String answer;

while (inputScanner.hasNextLine()){
    answer = inputScanner.nextLine();
    System.out.println(answer);

}

(请注意,我没有测试此代码。)

答案 1 :(得分:-1)

public class Test {
//The file should be in contained within the root of your project.
//  When you execute a project in eclipse, the working directory is the most top level of your project.
//  Right click your project, click New>File, and make a txt file called "TheGame.txt".
private static final String FILENAME = "menu.txt";

public static void main(String[] args) {

    try (BufferedReader inputFile = new BufferedReader(new FileReader(FILENAME))) {
         System.out.println("Reading from file" + inputFile);

        String answer;

        while ((answer = inputFile.readLine()) != null) {
            System.out.println(answer);
        }

    } catch (IOException e) {
        e.printStackTrace();
    }

}
}