Рубрики
Без рубрики

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

В Java мы можем использовать NIO “Файлы.переместить (исходный, целевой)” для переименования или перемещения файла.

В Java мы можем использовать NIO Files.move(исходный, целевой) чтобы переименовать или переместить файл.

import java.io.IOException;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;

  //...

  Path source = Paths.get("/home/mkyong/newfolder/test1.txt");
  Path target = Paths.get("/home/mkyong/newfolder/test2.txt");

  try{

    Files.move(source, target);

  } catch (IOException e) {
    e.printStackTrace();
  }

1. Переименуйте файл в том же каталоге.

1.1 В этом примере переименовывается файл в том же каталоге, сохраняя то же имя файла.

  • Переименуйте файл из этого /home/mkyong/Переименуйте файл из этого
  • /home/mkyong/ К этому
  Path source = Paths.get("/home/mkyong/hello.txt");

  try{

    // rename a file in the same directory
    Files.move(source, source.resolveSibling("newName.txt"));

  } catch (IOException e) {
    e.printStackTrace();
  }

1.2 Если целевой файл существует, то Files.move вызывает Исключение FileAlreadyExistsException .

java.nio.file.FileAlreadyExistsException: /home/mkyong/newName.txt
	at java.base/sun.nio.fs.UnixCopyFile.move(UnixCopyFile.java:450)
	at java.base/sun.nio.fs.UnixFileSystemProvider.move(UnixFileSystemProvider.java:267)
	at java.base/java.nio.file.Files.move(Files.java:1421)
	at com.mkyong.io.file.FileRename.main(FileRename.java:26)

1.3 Если указан параметр REPLACE_EXISTING и целевой файл существует, Files.move заменит его.

import java.nio.file.StandardCopyOption;

  Files.move(source, source.resolveSibling("newName.txt"),
              StandardCopyOption.REPLACE_EXISTING);

2. Переместите файл в новый каталог.

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

  • Переместить файл из этого /home/mkyong/hello.txt
  • К этому /home/mkyong/newfolder/hello.txt
  Path source = Paths.get("/home/mkyong/hello.txt");

  Path newDir = Paths.get("/home/mkyong/newfolder/");

  //create the target directories, if directory exits, no effect
  Files.createDirectories(newDir);

  Files.move(source, newDir.resolve(source.getFileName()),
              StandardCopyOption.REPLACE_EXISTING);

2.2 Если целевой каталог не существует, Files.move вызывает Исключение NoSuchFileException .

java.nio.file.NoSuchFileException: /home/mkyong/hello.txt -> /home/mkyong/newfolder/hello2.txt
  	at java.base/sun.nio.fs.UnixException.translateToIOException(UnixException.java:92)
  	at java.base/sun.nio.fs.UnixException.rethrowAsIOException(UnixException.java:111)
  	at java.base/sun.nio.fs.UnixCopyFile.move(UnixCopyFile.java:478)
  	at java.base/sun.nio.fs.UnixFileSystemProvider.move(UnixFileSystemProvider.java:267)
  	at java.base/java.nio.file.Files.move(Files.java:1421)
  	at com.mkyong.io.file.FileRename.main(FileRename.java:23)

3. Переместить файл – Apache Commons IO

3.1 Апач FileUtils.MoveFile использует механизм “копировать и удалять” для переименования или перемещения файла. Кроме того, он провел большую проверку и гарантировал, что будет выдано правильное исключение, надежное решение.

  
      commons-io
      commons-io
      2.7
  
import org.apache.commons.io.FileUtils;

    //...

    File source = new File("/home/mkyong/hello.txt");
    File target = new File("/home/mkyong/newfolder/hello2.txt");

    try {

        FileUtils.moveFile(source, target);

    } catch (IOException e) {
        e.printStackTrace();
    }

3.2 Если целевой файл существует, он вызывает Исключение FileExistsException .

org.apache.commons.io.FileExistsException: Destination '/home/mkyong/newfolder/hello2.txt' already exists
	at org.apache.commons.io.FileUtils.moveFile(FileUtils.java:2012)
	at com.mkyong.io.file.FileRename.main(FileRename.java:39)

3.3 Если целевой каталог не существует, создайте его.

4. 3.3 Если целевой каталог не существует, создайте его. (Устаревший ввод-вывод)

Устаревший IO Файл.renameTo() ненадежен, не рекомендуется использовать, прочитайте документацию по api .

Если File.renameTo() не удалось переименовать или переместить файл, он вернет значение false, без исключения, часто, мы понятия не имеем, что пошло не так.

Скачать Исходный Код

$клон git $клон git

$cd java-ввод-вывод

Рекомендации

Оригинал: “https://mkyong.com/java/how-to-rename-file-in-java/”