java - 在java中解析文本文件(大数据集)

标签 java parsing inputstream

我有一个文本文件,每一行如下所示: (电影评论数据库)

product/productId: B00004CK40   review/userId: A39IIHQF18YGZA   review/profileName: C. A. M. Salas  review/helpfulness: 0/0 review/score: 4.0   review/time: 1175817600 review/summary: Reliable comedy review/text: Nice script, well acted comedy, and a young Nicolette Sheridan. Cusak is in top form.

我想解析此文件以检索:

  • 产品/产品Id
  • 评论/用户 ID
  • 评论/个人资料名称
  • 评论/帮助
  • 评论/评分
  • 评论/时间
  • 回顾/总结
  • 评论/文字

此信息稍后将使用 MovieReviewMovie 类进行封装。

public class MovieReview {

    private Movie movie;
    private String userId;
    private String profileName;
    private String helpfulness;
    private Date timestamp;
    private String summary;
    private String review;
...

任何人都可以提供一种正确且有效的方法来解析此文件(大型数据集)吗?

谢谢。

最佳答案

如果它是一个大型数据集,您将希望避免一次将整个列表加载到内存中。我可能会用每行的处理程序来解决这个问题

public interface MovieReviewHandler {
    void handle(MovieReview revies);
}

那么你可以如下解析:

public class MovieReviewParser {
    public void parse(BufferedReader reader, MovieReviewHandler handler) {
        Pattern regex = Pattern.compile("product/productId:(.*)review/userId:(.*)review/profileName:(.*)"); // add other fields

        String line;
        while ((line = reader.readLine()) != null) {
            Matcher matcher = regex.matcher(line);
            if (!matcher.matches()) throw new RuntimeException();
            MovieReview review = new MovieReview();
            review.productId = matcher.group(1);
            review.userId = matcher.group(2);
            review.profileName = matcher.group(3);
            // etc

            handler.handle(review);
        }
    }
}    

关于java - 在java中解析文本文件(大数据集),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35917384/

相关文章:

c++ - 如何使用 RapidXml 解析 XML 文件

java - 如何打印程序中先前输入的文本文件的行

android - 如何正确获取服务器消息

java - 使用 Play Framework 进行多浏览器 Selenium/Web 驱动程序测试

java - 线程中的异常 "main"java.lang.IllegalStateException : Already connected

javascript - 查看使用外部化连接配置文件的 birt 报告

java - 打印记录的好方法

java - 与Windows台式机相比,Java在Linux服务器中的运行速度较慢

php - 既然 preg_match 函数似乎支持递归,是否可以使用它来解析 HTML?

Java读取JSON输入流