У меня возникли проблемы с заменой строки в текстовом файле с помощью пользовательского ввода. Всякий раз, когда я пытаюсь заменить строку, все остальные строки в текстовом файле удаляются. Может ли кто-нибудь помочь мне с этой проблемой?Замена строки в файле из сканера
public static void removedata(String s) throws IOException {
File f = new File("data.txt");
File f1 = new File("data2.txt");
BufferedReader input = new BufferedReader(new InputStreamReader(
System.in));
BufferedReader br = new BufferedReader(new FileReader(f));
PrintWriter pr = new PrintWriter(f1);
String line;
while ((line = br.readLine()) != null) {
if (line.contains(s)) {
System.out
.println("I see you are trying to update some information... Shall I go ahead?");
String go = input.readLine();
if (go.equals("yes")) {
System.out.println("Enter new Text :");
String newText = input.readLine();
line = newText;
System.out.println("Thank you, Have a good Day!");
break;
}
if (go.equals("no")) {
System.out.println(line);
System.out.println("Have a good day!");
break;
}
}
pr.println(line);
}
br.close();
pr.close();
input.close();
Files.move(f1.toPath(), f.toPath(), StandardCopyOption.REPLACE_EXISTING);
}
А вот мой главный
public static void main(String args[]) throws ParseException, IOException {
/* Initialization */
String[] keywords = { "day", "month" };
Scanner in = new Scanner(System.in);
Scanner scanner = new Scanner(System.in);
String input = null;
System.out.println("Welcome");
System.out.println("What would you like to know?");
System.out.print("> ");
input = scanner.nextLine().toLowerCase();
for (int i = 0; i < keywords.length; i++) {
if (input.contains(keywords[i])) {
removedata(keywords[i]);
}
}
}
И мой текстовый файл содержит «день является вторником» и «месяц март». Когда пользователь вводит «день в среду», я хочу заменить старую строку новой строкой. Какие-либо предложения?
Вы не можете напрямую заменить строку из текстового файла. Вы переписали весь файл. –
Ваш ответ уже указан в http://stackoverflow.com/questions/20039980/java-replace-line-in-text-file? – Shervin
Вместо того, чтобы говорить newText = line ... вы пробовали 'replace()'? Кроме того, я уверен, что вам нужно прочитать файл, а затем написать весь файл. – freddiev4