繁体   English   中英

如何对文本文件中的记录进行排序以及如何使用 Java 打印其他 txt 文件?

[英]How do I sort records in a text file and how to print other txt file using Java?

对文本文件中的数据进行了一些修改。 我已经尝试过建议的代码,但我没有成功地用这种格式在 txt 文件中再次写入它。 我试过收藏。 排序,但它以长行写入数据。

我的 txt 文件包含这些数据:

PID1,池^AMY,F,19890224 PID2,WILLIAMS^RORY,M,19881102 PID3,池^AMY,F,19890224 PID4,池^AMY,F,20010911

如何按升序对这些数据进行排序,并在排序后将它们再次存储在 txt 文件中?

0: PID1,池^AMY,F,19890224 PID3,池^AMY,F,19890224 PID4,池^AMY,F,20010911 1: PID2,WILLIAMS^RORY,M,19881102

您可以轻松地对文本文件中的记录进行排序,并使用集算器 SPL (一种基于 java 的数据处理开源脚本语言)将结果导出到另一个 txt 文件:

IIUC,data.txt 是这样的:

PID1,POND^AMY,F,19890224 PID2,WILLIAMS^RORY,M,19881102 PID3,POND^AMY,F,19890224 PID4,POND^AMY,F,20010911

并且您想按第二个字段(POND^AMY,WILLIAMS^RORY)和 result.txt 对记录进行排序,如下所示:

0: PID1,POND^AMY,F,19890224 PID3,POND^AMY,F,19890224 PID4,POND^AMY,F,20010911 1: PID2,WILLIAMS^RORY,M,19881102

声压级代码:

=file("result.txt").write(file("data.txt").read().split(" ").group(~.split@c()(2)).((#-1)/": "/~.concat(" ")).concat(" "))

SPL 提供 JDBC 驱动程序供 Java 调用。 只需将上述 SPL 脚本存储为 sort.splx 并在调用存储过程时在 Java 应用程序中调用它:

...
Class.forName("com.esproc.jdbc.InternalDriver");
con = DriverManager.getConnection("jdbc:esproc:local://");
st = con.prepareCall("call sort.splx()");
st.execute();
...

<!-- https://mvnrepository.com/artifact/com.scudata.esproc/esproc -->
<dependency>
    <groupId>com.scudata.esproc</groupId>
    <artifactId>esproc</artifactId>
    <version>20220402</version>
</dependency>

当我们执行 SQL 语句时,您还可以在 Java 程序中执行 SPL 代码:

...
st = con.prepareStatement("==file(\"result.txt\").export@c(file(\"data.txt\").import@c().sort(_2))");
st.execute();
...

或者,如果您的 txt 实际上是这样的 csv 格式:

PID1,POND^AMY,F,19890224
PID2,WILLIAMS^RORY,M,19881102
PID3,POND^AMY,F,19890224
PID4,POND^AMY,F,20010911

你想得到这样的 result.txt :

PID1,POND^AMY,F,19890224
PID3,POND^AMY,F,19890224
PID4,POND^AMY,F,20010911
PID2,WILLIAMS^RORY,M,19881102

使用这个 SPL 代码:

=file("result.txt").export@c(file("data.txt").import@c().sort(_2))

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM