java - 实时解析大型文本文件 (Java)

标签 java regex parsing

我对用 Java (1.6.x) 解析一个相当大的文本文件很感兴趣,想知道哪种方法被认为是最佳实践?

该文件的大小可能约为 1Mb,并且包含数千个条目;

Entry
{
    property1=value1
    property2=value2
    ...
}

等等

我的第一直觉是使用正则表达式,但我之前没有在生产环境中使用 Java 的经验,因此不确定 java.util.regex 类的功能有多强大。

澄清一下,我的应用程序将是一个 Web 应用程序 (JSP),它解析有问题的文件并显示它检索到的各种值。只有一个文件被解析(它位于主机上的第 3 方目录中)。

该应用的使用率相当低(可能只有少数用户每天使用它几次),但至关重要的是,当他们使用它时,信息会尽快被检索到。

此外,在每次解析文件时是否有任何预防措施将文件加载到内存中?

有人可以推荐一种方法吗?

谢谢

最佳答案

如果它大约为 1MB 并且字面意思是您声明的格式,那么这听起来像是您过度设计了东西。

除非您的服务器是 ZX Spectrum 之类的,否则只需使用正则表达式来解析它,将数据打入 HashMap (并将其保存在那里),不要担心。它会占用几兆字节的内存,但那又怎样...?

更新:为了让您对性能有一个具体的了解,我对 performance of String.split() 进行了一些测量。 (使用正则表达式)显示在 2GHz 机器上,拆分 10,000 个 100 个字符的字符串需要毫秒(换句话说,大约 1 兆字节的数据——实际上接近 2MB 的纯字节量,因为字符串是每个字符 2 个字节)。显然,这不是您正在执行的操作,但您明白我的意思:事情并没有那么糟糕...

关于java - 实时解析大型文本文件 (Java),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/781293/

相关文章:

java - 在 Scala 插件中控制错误的 IntelliJ 代码编辑器错误

java - 奇怪的编译问题

java - 如何在 xml 文件的命名查询中使用 Less Then 或等于 (<=)

javascript - 选择包含数字的第一个元素 - 2014

c# - 判断一个句子是否包含特定的词

Python:HTML 解析错误

json - 使用 Decodable 解析 JSON

java - 为 URLDecoder.decode() 抛出 UnsupportedEncodingException 的示例字符串

javascript - n{X,Y} 量词在 JavaScript 中不能与大括号配合使用

javascript - 如何使用 JavaScript 正则表达式在单词边界之间找到用户提供的字符串?