我有格式的這個文本文件:分割文本文件
Token:A1
sometext
Token:A2
sometext
Token:A3
我想分裂這個文件分成多個文件,這樣 文件1包含
A1
sometext
文件2包含
A2
sometext
我對任何編程或腳本語言都沒有太多的想法,最好是什麼該怎麼辦?我正在考慮使用Java來解決問題。
我有格式的這個文本文件:分割文本文件
Token:A1
sometext
Token:A2
sometext
Token:A3
我想分裂這個文件分成多個文件,這樣 文件1包含
A1
sometext
文件2包含
A2
sometext
我對任何編程或腳本語言都沒有太多的想法,最好是什麼該怎麼辦?我正在考慮使用Java來解決問題。
沒有最好的辦法,它取決於你的環境和實際需要。但是,對於任何語言都能找出您的基本算法,並嘗試使用最佳可用數據結構。如果您使用的是Java,請考慮使用guava splitter並查看它的實現。
如果你想使用java,我會考慮使用Scanner
與File
和PrintWriter
與for循環和一些異常處理,你會很好去。
導入適當的庫!
import java.io.*;
import java.util.*;
聲明類課程
public class someClass{
public static void main(String [] args){
現在這裏是哪裏的東西開始變得有趣了。我們使用類File來創建一個新文件,該文件將要讀取的文件的名稱作爲參數傳遞。你可以把你想要的任何東西放在文件的路徑中,也可以放在與你的代碼相同的目錄下的文件名。
File currentFile = new File("new.txt");
if (currentFile.exists() && currentFile.canRead()){
try{
接下來我們通過新創建的文件對象創建一個掃描儀掃描。只要文件有新的令牌可以掃描,for循環就會繼續。 .hasNext()
僅當掃描器中的輸入具有其他標記時才返回true。 PrintWriter寫入並創建文件。我已經設置它會創建基於循環迭代(0,1,2,3等)的文件,但可以輕鬆更改。 (見new PrintWriter(i + ".txt". UTF-8);
)
Scanner textContents = new Scanner(currentFile);
for(int i = 0; textContents.hasNext(); i++){
PrintWriter writer = new PrintWriter(i + ".txt", "UTF-8");
writer.println(textContents.next());
writer.close();
}
這些catch語句是超級重要!沒有它們,你的代碼甚至不會編譯。如果出現錯誤,他們將確保您的代碼不會崩潰。我把它們的內部留空,以便你可以做你認爲合適的事情。
} catch (FileNotFoundException e) {
// do something
}
catch (UnsupportedEncodingException i){
//do something
}
}
}
}
和那差不多它!如果您有任何問題,請務必發表評論!
[String.split](https://docs.oracle.com/javase/8/docs/api/java/lang/String.html#split-java.lang.String-)(「Token:」) ?給你一個字符串[]與「A1 sometext」,「A2 sometext」... – Fildor
是否「sometext」保證不包含「令牌:」? – Fildor