Чтение содержимого из текстового файла в ArrayList с использованием Java - PullRequest
0 голосов
/ 23 ноября 2018

У меня проблема с перемещением контента из файла в ArrayList.Пользователь выбирает строку из файла по индексу, который он хочет добавить в ArrayList.Я пробовал с quick.add (новые 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 голосов
/ 23 ноября 2018

Используйте более новые 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));

На самом деле, если файл является , а не текстовым файлом, нам нужно знать, как файл был заполнен.

...