【问题标题】:Store specific piece of text from text file into array using bufferedReader使用 bufferedReader 将文本文件中的特定文本存储到数组中
【发布时间】:2018-12-01 21:12:18
【问题描述】:

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

【问题讨论】:

  • 这听起来微不足道。你能分享你的进展吗?你在哪里卡住了?
  • 请从您的文件中添加一些示例行

标签: java io bufferedreader


【解决方案1】:

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

【讨论】:

  • 非常感谢!
【解决方案2】:
    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 DATA_INDEX = 数据索引(1:NAME:LAST_NAME

【讨论】:

    猜你喜欢
    • 2023-03-15
    • 2015-03-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-11-17
    • 1970-01-01
    • 2016-03-07
    相关资源
    最近更新 更多