Файловая манипуляция (изменение строк в файле) в Java - PullRequest
0 голосов
/ 16 марта 2019

Я пытаюсь прочитать файл и изменить некоторые строки.

Инструкция гласит: «вызов java Exercise12_11. Джон, имя файла удаляет строку Джон из указанного файла».

Воткод, который я написал до сих порработать со мной.Я только хочу знать, идет ли это в правильном направлении.

Это фактически изменяет строки в текущем файле, или мне понадобится другой файл для внесения изменений?Могу ли я просто обернуть это в PrintWriter для вывода?

Редактировать: Вытащил некоторую ненужную информацию, чтобы сфокусировать вопрос.Кто-то заметил, что файл не будет редактироваться.Означает ли это, что мне нужно использовать PrintWriter.Могу ли я просто создать файл для этого?То есть я не беру файл у пользователя?

1 Ответ

0 голосов
/ 16 марта 2019

Ваш код только читает файл и сохраняет строки в память. Вам нужно будет сохранить все измененное содержимое и затем перезаписать его обратно в файл.

Кроме того, если вам необходимо сохранить символ новой строки \n для сохранения формата при повторной записи в файл, обязательно включите его.

Есть много способов решить эту проблему, и это один из них. Это не идеально, но это работает для вашей проблемы. Вы можете получить некоторые идеи или указания из этого.

List<String> lines = new ArrayList<>();
try {
    Scanner in = new Scanner(file);

    while(in.hasNext()) {
        String newLine = in.nextLine();
        lines.add(newLine.replaceAll(args[0], "") + "\n"); // <-- save new-line character
    }

    in.close();

    // save all new lines to input file
    FileWriter fileWriter = new FileWriter(args[1]);
    PrintWriter printWriter = new PrintWriter(fileWriter);
    lines.forEach(printWriter::print);
    printWriter.close();

} catch (IOException ioEx) {
    System.err.println("Error: " + ioEx.getMessage());
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...