У меня есть файл, который читает мой сканер, а затем в новом файле мой автор копирует какую-то его часть и заменяет строки, которые я хочу редактировать.Замена некоторых строк в файле
У меня проблема в некоторых конкретных строках, к которым я хочу добавить некоторые элементы из stringarray [Ddd,Eee,...]
.
Моя проблема заключается в том, что я не могу заставить сканер и файл-конструктор идентифицировать точное положение, в котором я хочу передать элементы. Они должны быть ниже "downstream_rm"
, между/и /, а также они должны заменить старый текст.
Пример/Target:
старый файл строки:
....
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");
Пожалуйста, отформатируйте свой код. –
Вы не показываете, где вы пишете новый файл. – Dodd10x
Что вы имеете в виду? @ Dodd10x – user2598911