Удалить конкретную строку из текстового файла - PullRequest
0 голосов
/ 11 ноября 2018

Здравствуйте, мне нужно удалить определенную строку из текстового файла после поиска идентификатора p.g. ID = 2

students.txt

1,Giannis,Oreos,Man
2,Maria,Karra,Woman
3,Maria,Oaka,Woman

А после поиска и удаления получить:

students.txt

1,Giannis,Oreos,Man  
3,Maria,Oaka,Woman

Но не работает должным образом

Код пока:

    @FXML
    TextField  ID2;
    @FXML       
        public void UseDelete() throws IOException {
            File inputFile = new File("src/inware/students.txt");
            File tempFile = new File("src/inware/studentsTemp.txt");

            BufferedReader reader = new BufferedReader(new FileReader(inputFile));
            BufferedWriter writer = new BufferedWriter(new FileWriter(tempFile));

            String lineToRemove = ID2.getText();
            String currentLine;

            while ((currentLine = reader.readLine()) != null) {
                // trim newline when comparing with lineToRemove
                String trimmedLine = currentLine.trim();
                if (trimmedLine.equals(lineToRemove)) {
                    continue;
                }
                writer.write(currentLine + System.getProperty("line.separator"));
            }
            writer.close();
            reader.close();
            boolean successful = tempFile.renameTo(inputFile);
        }

1 Ответ

0 голосов
/ 11 ноября 2018

Если вы хотите удалить строку по номеру строки, я думаю, вы можете изменить свой код следующим образом. Вы можете передать значение int Id переменной lineToRemove вместо моего жестко закодированного значения

import java.io.*;

public class A {

    public static void main(String[] args) throws IOException {
        new A().useDelete();
    }

    public void useDelete() throws IOException {
        File inputFile = new File("src/inware/students.txt");
        File tempFile = new File("src/inware/studentsTemp.txt");

        BufferedReader reader = new BufferedReader(new FileReader(inputFile));
        BufferedWriter writer = new BufferedWriter(new FileWriter(tempFile));

        int lineToRemove = 2;
        String currentLine;
        int count = 0;

        while ((currentLine = reader.readLine()) != null) {
            count++;
            if (count == lineToRemove) {
                continue;
            }
            writer.write(currentLine + System.getProperty("line.separator"));
        }
        writer.close();
        reader.close();
        inputFile.delete();
        tempFile.renameTo(inputFile);
    }
}
...