[英]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.