使用bufferedReader将文本文件中的特定文本存储到数组中

时间:2018-12-01 21:12:18

标签: java io bufferedreader

-Java-我有一个文本文件,其中每行上存储ID号,名和姓。我正在使用BufferedReader逐行显示文本文件。但是,我只需要从每行中获取ID号并将其存储到数组中即可。如果有人可以帮助,将不胜感激。

2 个答案:

答案 0 :(得分:0)

正如您所说,您已经在打印从文件中读取的行,接下来,您只需要使用文件中的分隔符来分隔行。假设您使用逗号作为分隔符,那么您要做的就是用逗号分隔行并访问第一个元素并将其存储在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);

答案 1 :(得分:0)

    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的分隔符=“:”)。
 DATA_INDEX =数据索引(1:NAME:LAST_NAME <此ex的ID索引= 0)。