Java –ファイルの名前変更または移動

1。概要

このクイックチュートリアルでは、Javaでファイルの名前を変更/移動する方法について説明します。

最初にNIOのFilesクラスとPathクラスを使用し、次にJava Fileクラス、Google Guava、最後にApache CommonsIOライブラリを使用する方法を検討します。

この記事では「の一部である-戻る基本にJavaのここBaeldungのシリーズ」。

2.セットアップ

例では、次のセットアップを使用します。これは、ソースファイル名と宛先ファイル名の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パスファイルクラスの使用

Java NIOパッケージFiles.move()メソッドを使用することから始めましょう。

@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()は2種類の例外のみをスローすることに注意してください。

  • SecurityException –セキュリティマネージャが送信元または宛先への書き込みアクセスを拒否した場合
  • NullPointerException –パラメータターゲットがnullの場合

ターゲットがファイルシステムに存在しない場合(例外はスローされません)、メソッドの返された成功フラグを確認する必要があります。

5.グアバの使用

次へ–便利なFiles.move()メソッドを提供するGuavaソリューションを見てみましょう。

@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. CommonsIOを使用

最後に、Apache CommonsIOを使用したソリューションを見てみましょう。おそらく最も単純なソリューションです。

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

もちろん、この1行で、ターゲットディレクトリが同じかどうかに応じて、移動と名前の変更の両方が可能になります。

または、具体的に移動するためのソリューションを次に示します。宛先ディレクトリがまだ存在しない場合は、自動的に作成することもできます。

@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で入手できます。