Java中的txt文件格式验证
验证.txt文件是否为的最佳方法是:
实际上,.txt文件而不是仅具有扩展名的其他类型的文件已更改。
.txt文件的格式与指定的格式匹配(因此可以正确解析,包含所有相关信息,等等)。
这一切都是在Java中完成的,在Java中将检索文件,然后需要对其进行检查以确保它是应该的。到目前为止,我仅发现JHOVE(现在称为JHOVE2)作为完成此任务的工具,但是在通过Java代码而不是通过命令行实现它的文档方式方面却没有发现太多。谢谢你的帮助。
回答:
听起来您正在寻找一种通用的格式设置选项,我可以为您推荐正则表达式吗?您可以使用正则表达式进行各种不同类型的匹配。我在下面写了一个简单的示例[对于所有那些正则表达式专家,如果我不使用完美的表达方式,请多多怜悯我;)]。您可以将REGEX和MAX_LINES_TO_READ常量放入属性文件中,并对其进行修改以使其更通用。
您基本上可以测试“ .txt”文件中的最大行数(但是,建立格式需要很多行是好的-
您也可以对标题行使用正则表达式,或者根据需要使用多个不同的正则表达式来测试格式),如果所有这些行都匹配,则文件将被标记为“有效”。
这只是您可以运行的一个示例。除了仅捕获“ Exception”以外,还应该实现适当的异常处理。
对于用Java测试正则表达式,http://www.regexplanet.com/simple/index.html很好用。
这是“ ValidateTxtFile”源代码…
import java.io.*;public class ValidateTxtFile {
private final int MAX_LINES_TO_READ = 5;
private final String REGEX = ".{15}[ ]{5}.{15}[ ]{5}[-]\\d{2}\\.\\d{2}[ ]{9}\\d{2}/\\d{2}/\\d{4}";
public void testFile(String fileName) {
int lineCounter = 1;
try {
BufferedReader br = new BufferedReader(new FileReader(fileName));
String line = br.readLine();
while ((line != null) && (lineCounter <= MAX_LINES_TO_READ)) {
// Validate the line is formatted correctly based on regular expressions
if (line.matches(REGEX)) {
System.out.println("Line " + lineCounter + " formatted correctly");
}
else {
System.out.println("Invalid format on line " + lineCounter + " (" + line + ")");
}
line = br.readLine();
lineCounter++;
}
} catch (Exception ex) {
System.out.println("Exception occurred: " + ex.toString());
}
}
public static void main(String args[]) {
ValidateTxtFile vtf = new ValidateTxtFile();
vtf.testFile("transactions.txt");
}
}
这是“ transactions.txt”中的内容…
Electric Electric Co. -50.99 12/28/2011Food Food Store -80.31 12/28/2011
Clothes Clothing Store -99.36 12/28/2011
Entertainment Bowling -30.4393 12/28/2011
Restaurant Mcdonalds -10.35 12/28/11
我运行应用程序时的输出是…
Line 1 formatted correctlyLine 2 formatted correctly
Line 3 formatted correctly
Invalid format on line 4 (Entertainment Bowling -30.4393 12/28/2011)
Invalid format on line 5 (Restaurant Mcdonalds -10.35 12/28/11)
不知道是否存在性能问题,但是就像供参考之用,我多次复制“
transactions.txt”中的条目以构建一个大约130万行的文本文件在其中,我可以在PC上大约7秒内浏览整个文件。我将System.out更改为仅在无效(524,288)和有效(786,432)格式的条目末尾显示总计。“
transactions.txt”的大小约为85mb。
以上是 Java中的txt文件格式验证 的全部内容, 来源链接: utcz.com/qa/413507.html