簡體   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