Переименование файла в существующий файл java

avatar
Jason Aggarwal
7 апреля 2018 в 21:52
118
1
-1

Я пытаюсь

  1. Создать временный файл "Temp Account Info.txt"
  2. Записать информацию из существующего файла учетной записи "Account Information.txt" В "Temp Account Info.txt"
  3. Пропустить определенную информацию
  4. Удалить "Информация об учетной записи.txt"
  5. Переименовать файл Temp Account Info.txt в Account Information.txt

Моя проблема связана с шагами 4 и 5. Я также не уверен, что заказываю правильно. Код приведен ниже.

public static void deleteAccount(String accountNumber) throws Exception {
    File accountFile = new File("Account Information.txt");
    File tempFile = new File("Temp Account Info.txt");
    BufferedReader br = new BufferedReader(new FileReader(accountFile));
    FileWriter tempFw = new FileWriter(tempFile, true);
    PrintWriter tempPw = new PrintWriter(tempFw);

    String line;
    try {
        while ((line = br.readLine()) != null) {
            if(!line.contains(accountNumber)) {                    
                tempPw.print(line);
                tempPw.print("\r\n");
            }
        }
        **FileWriter fw = new FileWriter(accountFile);
        PrintWriter pw = new PrintWriter(fw);
        tempFile.renameTo(accountFile);
        accountFile.delete();
        fw.close();
        pw.close();
        tempFw.close();
        tempPw.close();
    } catch (Exception e) {
        System.out.println("ERROR: Account Not Found!");
    }
}

Полный код можно найти по адресу: https://hastebin.com/eposapecep.java

Будем очень признательны за любую помощь!

Мне известно, что я неправильно проверяю "Учетная запись не найдена" и попытаюсь выяснить это после проблемы с именем.

Заранее спасибо!

Источник
vanje
7 апреля 2018 в 22:07
0

Объясните, пожалуйста, подробнее, какая именно у вас проблема. Есть ли ошибка? Затем вы должны опубликовать полную трассировку стека. И вы должны использовать e.printStackTrace() в своем блоке catch. В противном случае вы упустите важную информацию.

Ответы (1)

avatar
Mark
7 апреля 2018 в 22:09
1

Используйте метод renameTo() файла.

   try {
        File file = new File("info.txt");
        BufferedReader br = new BufferedReader(new FileReader(file));

        String str = br.readLine();

        File file2 = new File("temp.txt");
        BufferedWriter bw = new BufferedWriter(new FileWriter(file2));

        bw.write(str);

        br.close();
        bw.close();
        if (!file.delete()) {
            System.out.println("delete failed");
        }
        if (!file2.renameTo(file)) {
            System.out.println("rename failed");
        }
    } catch (IOException ex) {
        ex.printStackTrace();
    }

Приведенный выше код считывает первую строку файла info.txt, записывает ее в файл temp.txt, удаляет файл info.txt, переименовывает файл temp.txt в файл info.txt

Jason Aggarwal
7 апреля 2018 в 22:24
0

Ах. Я не закрывал свой br, и я должен был разместить свои переименования после закрытия. Спасибо!