java中txt文件格式验证

2023-12-11

验证 .txt 文件是否为以下内容的最佳方法是什么:

  • 事实上,是一个 .txt 文件,而不是其他类型的文件,仅更改了扩展名。

  • .txt 文件的格式与指定的格式匹配(因此能够正确解析,包含所有相关信息等)

这一切都是在 Java 中完成的,其中将检索文件,然后需要检查它以确保它是它应该的样子。到目前为止,我只发现 JHOVE(现在是 JHOVE2)作为完成此任务的工具,但没有找到太多在 Java 代码中(而不是通过命令行)实现它的文档。感谢您的帮助。


听起来您正在寻找一种通用的格式化选项,我可以向您推荐正则表达式吗?您可以使用正则表达式进行各种不同类型的匹配。我在下面写了一个简单的例子[对于所有那些正则表达式专家,如果我没有使用完美的表达式,请怜悯我;)]。您可以将 REGEX 和 MAX_LINES_TO_READ 常量放入属性文件中并对其进行修改以使其更加通用。

您基本上会测试“.txt”文件的最大行数(但是需要很多行才能建立良好的格式 - 您也可以使用正则表达式作为标题行,或者根据需要执行多个不同的正则表达式来测试格式),如果所有这些行都匹配,则该文件将被标记为“有效”。

这只是您可能运行的一个示例。您应该实施适当的异常处理,而不仅仅是捕获“异常”。

为了测试 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/2011
Food                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 correctly
Line 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)


编辑 2011 年 12 月 29 日上午 10:00 左右
不确定这是否存在性能问题,但仅供参考,我多次复制“transactions.txt”中的条目以构建一个包含约 130 万行的文本文件,并且我能够通过在我的电脑上大约 7 秒即可完成整个文件。我将 System.out 更改为仅在无效 (524,288) 和有效 (786,432) 格式条目末尾显示总计计数。 “transactions.txt”大小约为 85mb。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

java中txt文件格式验证 的相关文章

  • 添加动态数量的监听器(Spring JMS)

    我需要添加多个侦听器 如中所述application properties文件 就像下面这样 InTopics Sample QUT4 Sample T05 Sample T01 Sample JT7 注意 这个数字可以多一些 也可以少一些
  • Ubuntu 上的 Vim:文本渲染错误,奇怪地重复和消失

    不久前我在 ubuntu 12 04 上安装了 vim 有时 当我在代码上运行光标 使用键盘 而不是鼠标 时 文本会消失 就好像渲染字符时出现问题一样 当我再次运行光标时 它通常会重新出现 这似乎是随机发生的 但通常足以让人恼火 为了更清楚
  • 如果在睡眠线程上调用interrupt()会发生什么?

    我有一个线程 然后run I call sleep 如果我中断这个线程会发生什么 MyThread extends Thread public void run try sleep 1000000 catch InterruptedExce
  • 如何使用 SimpleDateFormat 解析多种格式的日期

    我正在尝试解析文档中的一些日期 用户似乎以类似但不完全相同的格式输入了这些日期 以下是格式 9 09 9 2009 09 2009 9 1 2009 9 1 2009 尝试解析所有这些内容的最佳方法是什么 这些似乎是最常见的 但我想让我困扰
  • 无法使用maven编译java项目

    我正在尝试在 java 16 0 1 上使用 maven 构建 IntelliJ 项目 但它无法编译我的项目 尽管 IntelliJ 能够成功完成 在此之前 我使用maven编译了一个java 15项目 但我决定将所有内容更新到16 0 1
  • Android 自定义视图不能以正确的方式处理透明度/alpha

    我正在绘制自定义视图 在此视图中 我使用两个不同的绘画和路径对象在画布上绘画 我基本上是在绘制两个重叠的形状 添加 Alpha 后 视图中重叠的部分比图像的其余部分更暗 这是不希望的 但我不知道如何解决它 这是我的代码片段 用于展示我如何在
  • 查找文本的确切边界

    我需要知道一段文本的确切边界 相当于获取文本边界 https developer android com reference android graphics Paint html对于安卓 我意识到这在某种程度上与 Flutter 的设计背
  • 在文本文件中搜索单词并返回其频率

    如何在包含单词文本的文本文件中搜索特定单词并返回其频率或出现次数 使用扫描仪 String text Question how to search for a particular word in a text file containin
  • 如何让spring为JdbcMetadataStore创建相应的schema?

    我想使用此处描述的 jdbc 元数据存储 https docs spring io spring integration docs 5 2 0 BUILD SNAPSHOT reference html jdbc html jdbc met
  • 如何在android中设置多个闹钟,在这种情况下最后一个闹钟会覆盖以前的闹钟

    我正在开发一个Android应用程序 用户可以在其中设置提醒时间 但我在以下代码中遇到一个问题 即最后一个警报会覆盖之前的所有警报 MainActivity java public void setreminders DatabaseHan
  • 具有共享依赖项的多模块项目的 Gradle 配置

    使用 gradle 制作第一个项目 所以我研究了 spring gradle hibernate 项目如何组织 gradle 文件 并开始制作自己的项目 但是 找不到错误 为什么我的配置不起作用 子项目无法解决依赖关系 所以项目树 Root
  • Java:正则表达式排除空值

    在问题中here https stackoverflow com questions 51359056 java regexp for a separated group of digits 我得到了正则表达式来匹配 1 到 99 之间的一
  • 如何获取 WebElement 的父级[重复]

    这个问题在这里已经有答案了 我试过了 private WebElement getParent final WebElement webElement return webElement findElement By xpath 但我得到
  • Java 收集返回顶级项目的映射的嵌套流

    我有以下模型 class Item String name List
  • 如何记录来自 Akka (Java) 的所有传入消息

    在 Scala 中 您可以使用 LoggingReceive 包装接收函数 如何通过 Java API 实现相同的目标 def receive LoggingReceive case x do something Scala API 有Lo
  • 哪个集合更适合存储多维数组中的数据?

    我有一个multi dimensional array of string 我愿意将其转换为某种集合类型 以便我可以根据自己的意愿添加 删除和插入元素 在数组中 我无法删除特定位置的元素 我需要这样的集合 我可以在其中删除特定位置的数据 也
  • Java的-XX:+UseMembar参数是什么

    我在各种地方 论坛等 看到这个参数 并且常见的答案是它有助于高并发服务器 尽管如此 我还是找不到 sun 的官方文档来解释它的作用 另外 它是Java 6中添加的还是Java 5中存在的 顺便说一句 许多热点虚拟机参数的好地方是这一页 ht
  • Hibernate 和可序列化实体

    有谁知道是否有一个框架能够从实体类中剥离 Hibernate 集合以使它们可序列化 我查看了 BeanLib 但它似乎只进行实体的深层复制 而不允许我为实体类中的集合类型指定实现映射 BeanLib 目前不适用于 Hibernate 3 5
  • Java &= 运算符应用 & 或 && 吗?

    Assuming boolean a false 我想知道是否这样做 a b 相当于 a a b logical AND a is false hence b is not evaluated 或者另一方面 这意味着 a a b Bitwi
  • 在哪里存储 Java 的 .properties 文件?

    The Java教程 http download oracle com javase tutorial essential environment properties htmlon using Properties 讨论如何使用 Prop

随机推荐

  • 如何使用 FxCop 自定义规则验证 DataReader 实际上已关闭?

    我为 FxCop 1 36 编写了一些自定义规则 我编写了代码来查找打开的 DataReader 是否关闭的情况 但它不会检查哪个 DataReader 对象正在调用Close 方法 所以我无法确定所有打开的 DataReader 对象是否
  • 宏未显示在运行宏菜单中

    我开始学习 VBA 但我不明白为什么从互联网复制粘贴的一些宏没有显示在运行宏菜单 Alt F8 中 下面有 2 个宏 但只显示第二个 为什么 我该如何解决它 Sub Test1 ByVal Target As Hyperlink End S
  • 增强类序列化,成员类型的变化

    如何处理序列化成员类型的切换 同时保持与先前存档的兼容性 例如 我想改变float int to double size t 我知道我可以增加版本号 但这会使代码变得混乱 有不同的方法来处理吗 如果有区别 成员将通过以下顺序进行序列化MAK
  • 通过数组运算有效搜索包含子排列的排列?

    我有一组整数 比如 S 1 10 以及两个矩阵 N 和 M 它们的行是 S 阶元素的一些 但不一定是所有可能的 排列 比如 3 和分别为 5 个 例如N 1 2 3 2 5 3 M 1 2 3 4 5 2 4 7 8 1 排列 P 的子排列
  • Spark 中的嵌套并行化?正确的做法是什么?

    嵌套并行化 假设我正在尝试在 Spark 中执行相当于 嵌套 for 循环 的操作 就像在常规语言中一样 假设我在内部循环中有一个例程 可以以这种方式估计 PiPi Average Spark 示例确实如此 请参阅估计 Pi i 1000
  • Python lmfit 约束:a < b < c

    我在用lmfit在Python中拟合一些数据 其中包括拟合变量a b和c 我需要确保 a http cars9 uchicago edu software python lmfit MinimizerResult constraints h
  • Android 和 Proguard?

    我正在尝试在我的 Android 应用程序中使用 proguard proguardGui 接受一个输入和一个输出 输入需要一个 jar 文件 但是android的APK文件不包含任何jar 我尝试传递 apk 文件以及 apx 内的 de
  • 登录失败时如何在没有数据绑定的情况下清除PasswordBox的内容?

    我有一个 wpf 应用程序 由于我无法控制的原因 我正在仔细遵循 mvvm 模式 出于我无法控制的安全原因 我不想将数据绑定到我的密码框 登录失败时如何清除密码框内容 我更喜欢在 xaml 中这样做的方法 您可以创建您的attached D
  • 如何在 WebView 中上传多个图像?

    如何使我的应用程序的 WebView 中的文件上传行为与浏览器应用程序中的行为相同 我正在尝试在我的 Android 应用程序中创建一个 WebView 允许上传用相机拍摄的多张图像 当我在浏览器应用程序中打开下面的 HTML 代码时 我可
  • 使用 Javascript 加载其他外部 Javascript

    我有一个 JS 代码库可以从文件夹中加载 而不是键入HTML 文档的标记中一行一行 有没有一种方法可以仅链接一个 Javascript 文件来组织并自动加载其他 javascript 文件 我知道 Dojotoolkit 正在使用这种技术
  • 使用实体框架级联删除 - EF 删除的相关实体

    我在实体框架中遇到删除问题 简而言之 EF 显式尝试从数据库中删除实体 即使我已显式配置 EF 以在数据库中使用级联删除 我的设计 我有三种实体类型 MainEntity EntityTypeA and EntityTypeB EF已配置删
  • Google 地图嵌入 + 搜索框

    我正在尝试为我的网站制作一张地图 它将显示一些餐馆的标记 我还希望人们能够搜索地图 这样他们就可以查找地址并能够看到该地区的餐馆 我得到了带有我想要的标记的地图代码
  • 右浮动和绝对位置不能一起工作

    我希望 div 始终位于其父 div 的右侧 所以我使用float right 有用 但我也希望插入时不影响其他内容 所以我使用position absolute Now float right不起作用 我的 div 始终位于其父 div
  • 如何让 UITextView 检测网站、邮件和电话号码的链接

    我有一个 UITextView 对象 UIView 中的文本有电话号码 邮件链接 网站链接 我想将它们显示为具有以下功能的链接 当有人点击 URL 时 Safari 应打开该网站 当有人点击电子邮件链接时 邮件应该打开 并且我的地址位于字段
  • 将 CCMenu 与网格对齐

    有谁知道让 CCMenuItems 数组与网格对齐的最佳实践方法 这是一个cocos2d问题 例如 int levelCount 10 CCMenu menuArray CCMenu menuWithItems nil for int x
  • 使用ajax设置PHP会话变量

    想要更改 SESSION 变量 fullname 的值而不刷新页面 我使用ajax的实现 第 1 页 html
  • java swing应用程序中的快速搜索?

    我正在思考什么组件最适合在 swing 中显示快速搜索结果 我想创建这样的东西 创建一个文本字段 用户可以在其中输入一些文本 在输入过程中我将改进数据库的后端快速搜索 并且我想在文本框下方显示数据 他将能够浏览结果并按输入结果将显示在表格中
  • 在ASP.NET中添加动态控件,1.1和2.0有区别吗?

    我非常确定在 ASP NET 1 0 1 1 时代 需要在运行时创建的控件之前添加Page Load事件的页面生命周期 即里面Page Init 这是 Microsoft 的一篇文章 针对 NET 1 0 1 1 如何 在 ASP NET
  • 将 UWP 应用上传到 Windows 应用商店时出错:无法合并 PRI 文件 \Resources_split.scale-100.pri

    我正在将应用程序的最新版本上传到 Windows 商店 但我的应用程序抛出错误 包接受验证错误 我们遇到了致命错误 解析包时 MyApp UWP 2 33 0 0 x86 x64 ARM AppStore appxbundle 失败 合并
  • java中txt文件格式验证

    验证 txt 文件是否为以下内容的最佳方法是什么 事实上 是一个 txt 文件 而不是其他类型的文件 仅更改了扩展名 txt 文件的格式与指定的格式匹配 因此能够正确解析 包含所有相关信息等 这一切都是在 Java 中完成的 其中将检索文件