如何通过扫描仪读取文本文件

时间:2015-07-30 22:26:05

标签: java arrays file text text-files

我正在尝试从文本文件中读取,但只要程序进入我的while循环,它就会跳过它。我使用了前面的例子,我必须检查一下是否正确使用它,但这次似乎没有工作。

编辑:澄清,与" b ++"正在跳过它。

编辑2:更新了代码。

    public static void main(String[] args) throws FileNotFoundException {

    ToDoItem td = new ToDoItem();
    ToDoList tl = new ToDoList();

    File file = new File("ToDoItems.txt");
    Scanner ReadFile = new Scanner(file);
    Scanner keyboard = new Scanner(System.in);

    ArrayList<String> list = new ArrayList<>();
    String inputline;

    System.out.println("Welcome to the list maker!" + "\n" + "Please start typing.");

    try (PrintWriter fout = new PrintWriter(new File("ToDoItems.txt"))) {

        do {
            System.out.println("add to the list? [y/n]");
            inputline = keyboard.nextLine();

            if ("y".equals(inputline)) {
                fout.print(td.getDescription() + "\n");

            } else {
                System.out.println("Here is the list so far:");

                while (ReadFile.hasNext()) {
                    String listString = ReadFile.nextLine();
                    list.add(listString);

                }
            }
        } while ("y".equals(inputline));

    } catch (FileNotFoundException e) {
        System.err.println(e.getMessage());
    }
    System.out.println(list);
}

理想情况下,我希望它在每次通过while循环时打印一部分数组。但它最终会跳过它。 我检查了文本文件本身,它确实有我要打印的信息。但由于某些原因,扫描仪无法正确阅读。

2 个答案:

答案 0 :(得分:1)

String[] stringArray = new String[b];int b = 0;有关。

此外,您似乎不知道您的阵列有多大。我建议您改用ArrayList。这样你就不需要一个计数器,只需添加到ArrayList。

最好trycatch FileNotFoundException而不是main,但我想您知道您的文件将始终存在。

答案 1 :(得分:1)

我想您的问题是您正在尝试读取当前正在使用的文件,请在阅读之前尝试关闭fout对象,如下所示:

public static void main(String[] args){
    File file = new File("ToDoItems.txt");
    ToDoItem td = new ToDoItem();
    ToDoList tl = new ToDoList();

    Scanner keyboard = new Scanner(System.in);

    ArrayList<String> list = new ArrayList<>();
    String inputline;

    System.out.println("Welcome to the list maker!" + "\n" + "Please start typing.");
    try (PrintWriter fout = new PrintWriter(file)) {
    //                                       ^^ here
        do {
            System.out.println("add to the list? [y/n]");
            inputline = keyboard.nextLine();

            if ("y".equals(inputline)) {
                fout.print(td.getDescription() + System.lineSeparator());
            } else {
                // Important line is here!
                fout.close(); // <--- Close printwriter before read file

                System.out.println("Here is the list so far:");
                Scanner ReadFile = new Scanner(file);

                while (ReadFile.hasNext()) {
                    String listString = ReadFile.nextLine();
                    list.add(listString);
                }
            }
        } while ("y".equals(inputline));
    } catch (FileNotFoundException e) {
        System.err.println(e.getMessage());
    }
    System.out.println(list);
}