我需要解析和验证一个格式有点棘手的文件。
基本上该文件采用以下格式:
\n -- just to make clear it may have empty lines
CLIENT_ID
A_NUMERIC_VALUE
ONE_LINE_OF_SOME_RANDOM_COMMENT_ABOUT_THE_CLIENT
ANOTHER_LINE_OF_SOME_RADOM_COMMENT_ABOUT_THE_CLIENT
\n
\n
CLIENT_ID_2
A_NUMERIC_VALUE_2
ONE_LINE_OF_SOME_RANDOM_COMMENT_ABOUT_THE_CLIENT_2
ANOTHER_LINE_OF_SOME_RADOM_COMMENT_ABOUT_THE_CLIENT_2
OHH_THIS_ONE_HAS_THREE_LINES_OF_COMMENTS
该文件很少会很大(10 mb 可能是我见过的最大的文件 - 通常它们大约有 900kb-1mb)。
所以我有两个问题:
1)如何有效地验证文件的格式?使用正则表达式 + 扫描仪?(如果我可以将每个客户端条目仅转换为一个字符串,我认为这是一个非常可行的选择 - 所以我可以在其上应用正则表达式)。
2)我需要将文件中的每个条目转换为客户端对象。我应该在将整个文件转换为 Java 对象之前对其进行验证吗?还是应该在继续将其条目转换为 Java 对象时验证该文件?(请记住,如果任何客户端条目无效,处理将立即停止并引发异常 - 因此创建的任何对象都将被丢弃)。
我真的很想看到您对问题 #1 的建议。问题 #2 更让我好奇你将如何处理这种情况。如果愿意,请忽略 #2,但请回答 #1 =)
有谁知道任何框架可以帮助我顺便处理文件?
谢谢。
更新:
我看到了这个问题,问题与我的非常相似,但我不确定正则表达式是否是解决这个问题的最佳方法。整个文件中可能有相当多的“\n”,每个客户端条目的注释数量和可选 ID 的数量不同 - 因此正则表达式必须非常复杂。这就是为什么我在问题 #1 中提到将每个条目转换为一行的原因,因为这种方式会更容易创建一个正则表达式来验证......然而,这个解决方案在我看来并不是很优雅:(
干杯。