[英]Java: Editing a Text File based on the contents of a List
這應該是一個非常直接的問題。 我有一個足夠大的文本文件,其中的數據看起來像這樣
B38564108,EURONAV NV SHS,
B38564908,EURONAV NV CALL,
B38564958,EURONAV NV PUT,
B6S7WD106,NYXOAH S A SHS,
該文件中大約有 25,000 行。 我還有一個 ArrayList(在下面的代碼片段中標記為 subStrings),其中 List 中的每個元素都包含來自該文件每一行的子字符串。 列表中的元素是有序的,因此索引將始終與文件中的行號相同。 例如,List 中的前 4 個元素是
{"EURONAV NV","EURONAV NV","EURONAV NV","NYXOAH S A"}
我想要做的是創建一個與原始文本文件具有相同內容的新文本文件,除了在列表元素中的子字符串附加一個逗號。 所以對於這 4 行,結果如下所示
B38564108,EURONAV NV, SHS,
B38564908,EURONAV NV, CALL,
B38564958,EURONAV NV, PUT,
B6S7WD106,NYXOAH S A, SHS,
我所做的是將原始文件中的行存儲為字符串列表,然后嘗試更新每個元素,並將結果列表寫入新的文本文檔。 這是目前的代碼
File textFile = new File("new_doc.txt");
List<String> lines = FileUtils.readLines(originalTextFile, "UTF-8");
FileWriter fw = new FileWriter(textFile.getAbsoluteFile());
BufferedWriter bw = new BufferedWriter(fw);
if (subStrings.size() == lines.size()) {
for (int i = 0; i < lines.size(); i++) {
String replacementText = subStrings.get(i).concat(",");
lines.set(i,lines.get(i).replaceAll(subStrings.get(i), replacementText));
bw.write(lines.get(i) + System.getProperty("line.separator"));
}
bw.close();
}
新文件創建良好,但內容與原始文件相同。 每行的子字符串都沒有附加逗號。 任何指向我在這里所缺少的方向的指針將不勝感激。 謝謝
我認為這可以滿足您的要求。 (編輯:不,我對您的代碼中出了什么問題感到困惑。仔細檢查輸出,我認為可能還有其他事情發生。您確定您正在查看正確的輸出文件嗎?)
public class ListStringReplace {
static List<String> subStrings = Arrays.asList( "EURONAV NV", "EURONAV NV", "EURONAV NV", "NYXOAH S A" );
static List<String> lines = Arrays.asList(
"B38564108,EURONAV NV SHS",
"B38564908,EURONAV NV CALL",
"B38564958,EURONAV NV PUT",
"B6S7WD106,NYXOAH S A SHS"
);
public static void main( String[] args ) {
substitute();
System.out.println( "Output:\n" + lines );
}
private static void substitute() {
// File textFile = new File( "new_doc.txt" );
// List<String> lines = FileUtils.readLines( originalTextFile, "UTF-8" );
//
if( subStrings.size() == lines.size() ) {
for( int i = 0; i < lines.size(); i++ ) {
// String replacementText = subStrings.get( i ).concat( "," );
lines.set( i, lines.get( i ).replace( subStrings.get( i ), subStrings.get( i ) + "," ) );
}
// FileWriter fw = new FileWriter( textFile.getAbsoluteFile() );
// BufferedWriter bw = new BufferedWriter( fw );
//
// for( int i = 0; i < lines.size(); i++ ) {
// bw.write( lines.get( i ) + System.getProperty( "line.separator" ) );
// }
// bw.close();
}
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.