我对用 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/