スキャナーが読み取るファイルがあり、新しいファイルでライターがその一部をコピーし、編集したい行を置き換えます。
からいくつかの要素を追加したい特定の行に問題がありstringarray [Ddd,Eee,...]
ます。
私の問題は、要素を転送したい正確な位置をスキャナーとファイルライターに特定させることができないことです。"downstream_rm"
/ と / の間の の下にある必要があり、古いテキストを置き換える必要もあります。
例/ターゲット:
古いファイル行:
....
downstream_rm(j,l) ...
/ Aaa.(bbb)
Bbb.(ccc) /
....
新しいファイル行:
...
downstream_rm(j,l( ....
/ str1
str2
... /
私が試したこのコードは、古いテキストも保持しているため、望ましい結果が得られませんでした:
public static void main(String[] args) {
File file = new File();
File filenew = new File();
try {
PrintWriter out = new PrintWriter(new FileWriter(filenew, true));
Scanner scanner = new Scanner(file);
while (scanner.hasNextLine()) {
String line = scanner.nextLine();
if(line.contains("downstream_rm(j,l)")) {
scanner.nextLine(); // so that the line with "downstream" wont be deleted
String raw = "" ;
for (int index = 0; index < strarray.size(); index++) {
String s = strarray.get(index);
raw = raw + "\n" + s;
}
line = "/"+raw+"/" ; }
out.write(line);
out.write("\n");
}
out.flush();
out.close();
scanner.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
これも試しましたが、新しいものは何も出力されませんでした:
if(line.contains("downstream_rm(j,l)")){
scanner.nextLine();
String raw = "" ;
for (int index = 0; index < strarray.size(); index++) {
String s = strarray.get(index);
raw = raw + "\n" + s;
}
String raw2 = raw.replaceAll(",", "");
line = line.replaceAll("/.*?/", "/"+raw2+"/");
}
out.write(line);
out.write("\n");