Сохраните определенный фрагмент текста из текстового файла в массив, используя bufferedReader - PullRequest
0 голосов
/ 02 декабря 2018

-Java- У меня есть текстовый файл, в котором я храню идентификационный номер, имя и фамилию в каждой строке.Я использую BufferedReader для отображения текстовых файлов построчно.Однако тогда мне нужно взять идентификационный номер только из каждой строки и сохранить его в массиве.Если кто-то может помочь, это будет с благодарностью.

Ответы [ 2 ]

0 голосов
/ 02 декабря 2018
    List<String> idList = Files.readAllLines(
            Paths.get(FILE_PATH),
            Charset.defaultCharset()
    ).stream()
            .map(line -> line.split(SEPARATOR)[DATA_INDEX])
            .collect(Collectors.toList());

FILE_PATH = расположение файла ("c: // users // ..").
SEPARATOR = какие отдельные данные (1: NAME: LAST_NAME <разделитель для этого ex = ":").<br> DATA_INDEX = индекс данных (1: ИМЯ: LAST_NAME <индекс id для этого ex = 0). </p>

0 голосов
/ 02 декабря 2018

Как вы сказали, вы уже печатаете строку, считанную из файла, затем вам просто нужно разделить строку с разделителем, который у вас есть в файле.Предполагая, что в качестве разделителя используется запятая, все, что вам нужно сделать, это разделить строку запятой и получить доступ к первому элементу и сохранить его в List,

. Вот пример кода,

public static void main(String[] args) throws Exception {
    try(BufferedReader br = new BufferedReader(new FileReader("filename.txt"))) {
        String line = null;
        List<String> idList = new ArrayList<String>();

        while((line = br.readLine()) != null) {
            System.out.println(line); // you already printing it
            String[] tokens = line.split("\\s*,\\s*"); // assuming your line is like this --> 123, Pushpesh, Rajwanshi
            if (tokens.length > 0) {
                idList.add(tokens[0]); // ID will be accessed at zero index
            }
        }

        idList.forEach(System.out::println);
    }

}

Используя Java8 и выше, вы можете сделать это в один лайнер.

List<String> idList = Files.lines(Paths.get("filename.txt")).filter(x -> x.trim().length() > 0)
        .map(x -> x.split("\\s*,\\s*")).map(x -> x[0]).collect(Collectors.toList());

idList.forEach(System.out::println);
...