Перейти к содержимому

Как переименовать файл в java

  • автор:

Java — переименовать или переместить файл

Сначала мы рассмотрим использование классов Files и Path из NIO, затем класса Java File , Google Guava и, наконец, библиотеки Apache Commons IO.

Эта статья является частью серии « Java — Back to Basic » здесь, на ForEach.

2. Настройка​

В примерах мы будем использовать следующую настройку, которая состоит из двух констант для имени исходного и целевого файлов и шага очистки, позволяющего запускать тесты несколько раз:

 private final String FILE_TO_MOVE = "src/test/resources/originalFileToMove.txt";   private final String TARGET_FILE = "src/test/resources/targetFileToMove.txt";    @BeforeEach   public void createFileToMove() throws IOException    File fileToMove = new File(FILE_TO_MOVE);   fileToMove.createNewFile();   >    @AfterEach   public void cleanUpFiles()    File targetFile = new File(TARGET_FILE);   targetFile.delete();   > 

3. Использование классов путей и файлов NIO

Начнем с использования метода Files.move() из пакета Java NIO:

 @Test   public void givenUsingNio_whenMovingFile_thenCorrect() throws IOException    Path fileToMovePath = Paths.get(FILE_TO_MOVE);   Path targetPath = Paths.get(TARGET_FILE);   Files.move(fileToMovePath, targetPath);   > 

В JDK7 был значительно обновлен пакет NIO и добавлен класс Path . Это предоставляет методы для удобного управления артефактами файловой системы.

Обратите внимание, что и файл, и целевой каталог должны существовать.

4. Использование класса файлов

Давайте теперь посмотрим, как мы можем сделать то же самое, используя метод File.renameTo() :

 @Test   public void givenUsingFileClass_whenMovingFile_thenCorrect() throws IOException    File fileToMove = new File(FILE_TO_MOVE);   boolean isMoved = fileToMove.renameTo(new File(TARGET_FILE));   if (!isMoved)    throw new FileSystemException(TARGET_FILE);   >   > 

В этом примере файл, который нужно переместить, существует, как и целевой каталог.

Обратите внимание, что renameTo() генерирует только два типа исключений:

  • SecurityException — если менеджер безопасности запрещает запись в источник или в место назначения.
  • NullPointerException — в случае, если цель параметра равна нулю

Если цель не существует в файловой системе — исключение не будет выдано — и вам придется проверить возвращенный флаг успеха метода.

5. Использование гуавы

Далее — давайте взглянем на решение Guava, которое предоставляет удобный метод Files.move() :

 @Test   public void givenUsingGuava_whenMovingFile_thenCorrect()   throws IOException    File fileToMove = new File(FILE_TO_MOVE);   File targetFile = new File(TARGET_FILE);    com.google.common.io.Files.move(fileToMove, targetFile);   > 

Опять же, в этом примере файл, который нужно переместить, и целевой каталог должны существовать.

6. С вводом-выводом Commons

Наконец, давайте взглянем на решение с Apache Commons IO — возможно, самое простое:

 @Test   public void givenUsingApache_whenMovingFile_thenCorrect() throws IOException    FileUtils.moveFile(FileUtils.getFile(FILE_TO_MOVE), FileUtils.getFile(TARGET_FILE));   > 

Эта единственная строка, конечно же, позволит перемещать или переименовывать, в зависимости от того, совпадает ли целевой каталог или нет.

В качестве альтернативы — вот решение для конкретного перемещения, которое также позволяет нам автоматически создавать каталог назначения, если он еще не существует:

 @Test   public void givenUsingApache_whenMovingFileApproach2_thenCorrect() throws IOException    FileUtils.moveFileToDirectory(   FileUtils.getFile("src/test/resources/fileToMove.txt"),   FileUtils.getFile("src/main/resources/"), true);   > 

6. Заключение

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

Код примеров доступен на GitHub .

Java не удается переименовать файл

У меня есть массив байт, я создаю файл и записываю массив байт в этот файл, потом закрываю запись. Как запись закрыта я хочу переименовать расширение файла. Мой код:

FileOutputStream newFile = new FileOutputStream(rb_Path[0]+"\\"+file_id+".d"); //было .dat //Записать массив полученных байт в новый файл .dat newFile.write(byteNewFile); newFile.flush(); //Закрываем создание нового файла newFile.close(); File file_d = new File(rb_Path[0]+"\\"+file_id+".d"); //File file_dat = new File(rb_Path[0]+"\\"+file_id+".dat"); //file.d переименовать в file.dat boolean isRenamed = file_d.renameTo(new java.io.File(rb_Path[0] + "\\" + file_id + ".dat")); System.out.println(isRenamed); 

Но получаю false. И как итог не переименовался файл (1234.d на 1234.dat). Также пробовал так:

File file_d = new File(rb_Path[0]+"\\"+file_id+".d"); //Создан File file_dat = new File(rb_Path[0]+"\\"+file_id+".dat"); //Не создан, служит объектом для rename //file.d переименовать в file.dat boolean isRenamed = file_d.renameTo(file_dat); System.out.println(isRenamed); 
  • rb_Path[0] — не имеет некорректных символов.
  • file_id — это int, например 1234

Поэтому даже не знаю как быть.

Подскажите пожалуйста как можно решить такую задачу. Может стоит и вовсе делать все по другому? У кого есть решение? Заранее спасибо большое.

Java пример — переименование файлов

Следующий пример демонстрирует использование класса File oldName.renameTo (NEWNAME) метод, чтобы переименовать файл:

/* author by w3cschool.cc Main.java */ import java.io.File; public class Main < public static void main(String[] args) < File oldName = new File("C:/program.txt"); File newName = new File("C:/java.txt"); if(oldName.renameTo(newName)) < System.out.println("已重命名"); >else < System.out.println("Error"); >> >

Выход выше кода для запуска (выполнения вы можете создать файл перед program.txt программы):

Как переименовать файл в Java

Java поставляется с методом renameTo () для переименования файла. Однако этот метод действительно зависит от платформы: вы можете успешно переименовать файл в * nix, но в Windows это не удалось. Таким образом, возвращаемое значение (true, если переименование файла прошло успешно, false, если не удалось), всегда нужно проверять, чтобы убедиться, что файл переименован успешно.

File.renameTo () Пример

 package com.csharpcoderr.file; import java.io.File; public class RenameFileExample < public static void main(String[] args) < File oldfile =new File("oldfile.txt"); File newfile =new File("newfile.txt"); if(oldfile.renameTo(newfile))< System.out.println("Rename succesful"); >else < System.out.println("Rename failed"); >> > 

Ссылка

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *