使用Java将文本文件中的内容读取到ArrayList中

时间:2018-11-23 16:36:31

标签: java java-8 java-io

我将内容从文件移动到ArrayList时遇到问题。用户通过一个索引选择一条要添加到ArrayList的行。我已经尝试过使用quick.add(new Pastatas());但正如我所见,它将在其中添加我的空构造函数。

private void myobj() {
    File FILE = new File(filex);
    if (FILE.exists() && FILE.length() > 0) {
        try {
            Scanner SC = new Scanner(FILE);
            for (int i = 0; i < FILE.length(); i++) {
                if (SC.hasNextLine()) {
                    String storage = SC.nextLine();
                    System.out.println("ID: " + i + " " + storage);
                }
            }
            System.out.println("select one.");
            Scanner sc = new Scanner(System.in);
            int userInputas = Integer.parseInt(sc.nextLine());
            for (int j = 0; j < FILE.length(); j++) {
                if (userInputas == j) {
                    quick.add(/*Probably problem here*/)
                }
            }
        } catch (IOException e) {
            System.err.println(e.getMessage() + "error");
        }
    }

1 个答案:

答案 0 :(得分:0)

将较新的Path, Paths, Files用于此类任务。

    Path path = Paths.get(filex);
    List<String> lines = Files.readAllLines(path);

    System.out.println("Select one.");
    Scanner sc = new Scanner(System.in);
    int lineno = Integer.parseInt(sc.nextLine()); // Maybe 1 based
    int index = lineno - 1; // Zero based index

    if (0 <= index && index < lines.size()) {
        String line = lines.get(index);
        System.out.println("Selected: " + line);
        quick.add(line);
    }

逻辑错误:

FILE(或上面的Path)可能只是文件的昵称/名称。 长度是字节数,即文件大小。 因此,对于文本行的选择,必须做一些不同的事情,例如打开,阅读并最后关闭文件。 Files类提供实用程序功能来执行诸如加载所有行之类的事情。


阅读您的评论后;也许更像是:

quick.add(new Pastatas(line));

实际上,如果文件不是文本文件,我们将需要知道文件的填充方式。