Как удалить текстовый файл в java?

Я хочу перезаписать текстовый файл с помощью java, сначала создав новый файл, затем удалив старый и, наконец, переименовав только что созданный файл с тем же именем, что и мой старый файл. Но мой код не работает.

                File oldFile = new File("charList.txt");
                    File newFile = new File("new.txt");
                    oldFile.deleteOnExit();

                    if(oldFile.delete()){
                       newFile.renameTo(oldFile);
                    }

person user2350622    schedule 10.11.2013    source источник
comment
Вы имели в виду newFile.renameTo(oldFile);?   -  person Matt Ball    schedule 10.11.2013
comment
@MattBall извините за опечатку   -  person user2350622    schedule 10.11.2013


Ответы (2)


  • С помощью deleteOnExit() вы удаляете старый файл, когда виртуальная машина завершает работу. Я думаю, это не то, что вы хотели, поскольку вы вызываете delete() для того же файла в следующей команде.
  • Кроме того, вы переименовываете свой новый файл в новый файл вместо старого файла. Пытаться

    новыйФайл.renameTo(старыйФайл)

person Stefan Freitag    schedule 10.11.2013

На некоторых платформах (например, Windows!) вы не можете удалить файл, открытый текущей или другой программой. Я ожидаю, что именно это приводит к сбою шага удаления в вашей программе... если это действительно происходит.

Как указывает комментарий @Matt Ball, это может быть сбой переименования ... потому что в коде, который вы нам показали, вы фактически переименовываете «new.txt» в себя!

Наконец, ваш вызов oldFile.deleteOnExit() почти наверняка неверен:

  • Это не повлияет на удаление oldFile в следующем коде... если это ваше намерение.

  • Если это удастся, он (я думаю!) удалит файл, который вы тщательно переименовали в «charList.txt». File обозначает путь к файлу, а не дескриптор файла.

person Stephen C    schedule 10.11.2013