Почему файл не удаляется и не переименовывается? - PullRequest
0 голосов
/ 31 марта 2020

В моей программе две модели: Автобус и Ученик. Каждый хранится в текстовом файле с именами Busses.txt и Learners.txt соответственно. У меня возникла проблема, когда метод удаления записи учащегося работает, но метод удаления записи шины не работает, хотя код практически идентичен.

Метод удаления учащегося:

public void deleteLearner(String ID) {
    removeBlankLines("Learners.txt");
    File oldFile = new File("Learners.txt");
    File tempFile = new File("tempFile.txt");

    String removeKey = ID;

    String LearnerID;
    String nameSurname;
    boolean status;
    String busOfLearner;
    String line;
    String lineToKeep;
    try {
        Scanner scFile = new Scanner(new File("Learners.txt"));

        while (scFile.hasNext()) {          
            line = scFile.nextLine();
            Scanner scLine = new Scanner(line).useDelimiter("#");
            LearnerID = scLine.next();
            nameSurname = scLine.next();
            status = scLine.nextBoolean();
            if (scLine.hasNext()) {
                busOfLearner = scLine.next();
            } else {
                busOfLearner = "";
            }

            if (!LearnerID.equalsIgnoreCase(removeKey)) {
                lineToKeep = LearnerID + "#" + nameSurname + "#" + status + "#" + busOfLearner + "\n";

                FileWriter fWriter = new FileWriter(tempFile,true);
                BufferedWriter bWriter = new BufferedWriter(fWriter);
                bWriter.write(lineToKeep);

                bWriter.close();
                fWriter.close();
            }  
            scLine.close();
        }
        scFile.close();
        boolean successfulDelete = oldFile.delete();
        File transfer = new File("Learners.txt");
        boolean successfulRename = tempFile.renameTo(transfer);
    } 
    catch (Exception e) {
        System.out.println("An error has occured deleting a learner record " + e);
    }
}

Метод удаления шины:

public void deleteBus(String removeBusName) {
    removeBlankLinesBus("Busses.txt");
    File oldFile = new File("Busses.txt");
    File newFile = new File("NewBusFile.txt");

    String deleteKey = removeBusName;

    String currentBusName;
    int currentNumSeats;
    String currentPickLocation;
    String currentDropLocation;
    String currentPickTime;
    String currentDropTime;
    String line;
    String lineToKeep;
    try {
        Scanner scFile = new Scanner(new File("Busses.txt"));

        while (scFile.hasNext()) {                
            line = scFile.nextLine();
            Scanner scLine = new Scanner(line).useDelimiter("#");

            currentBusName = scLine.next();
            currentNumSeats = scLine.nextInt();
            currentPickLocation = scLine.next();
            currentDropLocation = scLine.next();
            currentPickTime = scLine.next();
            currentDropTime = scLine.next();                

            if (!currentBusName.equalsIgnoreCase(deleteKey)) {
                lineToKeep = currentBusName + "#" + currentNumSeats + "#" + currentPickLocation + "#" + currentDropLocation + "#" + currentPickTime + "#" + currentDropTime + "\n";

                FileWriter fWriter = new FileWriter(newFile,true);
                BufferedWriter bWriter = new BufferedWriter(fWriter);
                bWriter.write(lineToKeep);

                bWriter.close();
                fWriter.close();
            }
            scLine.close();    
        }            
        scFile.close();

        boolean successfulDelete = oldFile.delete();
        File transfer = new File("Busses.txt");
        boolean successfulRename = newFile.renameTo(transfer);

    }        
    catch (Exception e) {
        System.out.println("An error has occured deleting " + removeBusName + " from the file: " + e);
    } 

}

Проблема: При использовании метода удаления шины старый файл не удаляется временный или новый файл не переименовывается в исходный файл. Я очень уверен, что все файлы, потоки, сканеры и т. Д. c. закрыты, как это было точно так же, как я делал в методе удаления учащегося, который работает, а файлы удаляются и переименовываются в методе удаления учащегося, как и должно быть. Помощь будет принята с благодарностью.

РЕДАКТИРОВАТЬ: Реализация методов: Учащийся:

System.out.println(myController.PrintLearnerArr(myController.LoadLearner("Learners.txt")));
String delete = "0210045112055";
myController.deleteLearner(delete);
System.out.println(myController.PrintLearnerArr(myController.LoadLearner("Learners.txt")));

Автобус:

System.out.println(myController.PrintBusArr(myController.LoadBus("Busses.txt")));
String deleteKey = "deleteme";
myController.deleteBus(deleteKey);
System.out.println(myController.PrintBusArr(myController.LoadBus("Busses.txt")));
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...