Javaでは、さまざまな方法でファイルの名前を変更または移動できます。 移動するのはファイル名を変更するのと同じ意味なので、 rename と move は同じ意味であると考えることができます。
1. Files.move() でファイル名を変更します。
Java7が提供するFilesとPathクラスを使用してファイルを移動できます。
File.move(A, B)
は引数に渡された A のパスを B に変更します。 Aが存在しない、またはBのパスにすでにファイルがあるなどの理由で移動が失敗する可能性があり、Exceptionが発生する可能性があります。
import java.io.IOException;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;
public class Example {
public static void main(String args[]) {
try {
Path filePath = Paths.get("/tmp/example.txt");
Path filePathToMove = Paths.get("/tmp/my_example.txt");
Files.move(filePath, filePathToMove);
} catch (IOException e) {
e.printStackTrace();
}
}
}
2. File.renameTo() でファイル名を変更します。
File.renameTo()
は、ファイルを引数として渡されたファイルのパスに変更します。 (名前を変更します)
renameが成功した場合はtrueを返し、失敗した場合はfalseを返します。ファイルが存在しないなどの理由で、名前変更が失敗する可能性があります。
import java.io.File;
public class Example {
public static void main(String args[]) {
File file = new File("/tmp/example.txt");
File fileToMove = new File("/tmp/my_example.txt");
boolean success = file.renameTo(fileToMove);
if (!success) {
System.out.println("Failed to rename to " + fileToMove);
}
}
}
3. Commonsライブラリへのファイル名の変更、
Mavenプロジェクトの場合は、次のようにcommons-ioライブラリを追加できます。
<dependency>
<groupId>commons-io</groupId>
<artifactId>commons-io</artifactId>
<version>2.6</version>
</dependency>
他のビルドシステムを使用するプロジェクトは、mvnrepository.comを参照して設定してください。
Commonsライブラリの FileUtils.moveDirectory(A, B)
は、ディレクトリAのパスをBに変更します。
try {
File file = FileUtils.getFile("/home/js/test/myfile");
File fileToMove = FileUtils.getFile("/home/js/test/myfile_renamed");
FileUtils.moveDirectory(file, fileToMove);
} catch (IOException e) {
e.printStackTrace();
}
フォルダ以外のファイルの名前や場所を変更するには、次のように FileUtils.moveFile()
を使用します。
try {
File file = FileUtils.getFile("/home/js/test/text.txt");
File fileToMove = FileUtils.getFile("/home/js/test/new_folder/renamed_text.txt");
FileUtils.moveFile(file, fileToMove);
} catch (IOException e) {
e.printStackTrace();
}
moveFile()
は引数に渡されるパスにファイルを移動します。移動するパスに作成されていないディレクトリがある場合は、そのフォルダを自動的に作成します。
上記の例では、/home/js/test/new_folder
フォルダが存在しないときにこのフォルダを作成してファイルを移動します。
存在しないフォルダを作成したくない場合は、次のように moveFileToDirectory(src, des, createDestDir)
を使用します。
最後の引数createDestDirにfalseを渡すと、存在しないフォルダは作成されません。逆に true を渡すとフォルダが作成されます。
try {
File file = FileUtils.getFile("/home/js/test/text.txt");
File fileToMove = FileUtils.getFile("/home/js/test/new_folder/text.txt");
FileUtils.moveFileToDirectory(file, fileToMove, false);
} catch (IOException e) {
e.printStackTrace();
}
フォルダが存在しない場合、ファイルは移動されず、次の例外がスローされます。
java.io.FileNotFoundException: Destination directory '/home/js/test/new_folder/text.txt' does not exist [createDestDir=false]
at org.apache.commons.io.FileUtils.moveFileToDirectory(FileUtils.java:3042)
at example.io.RenameOrMove.main(RenameOrMove.java:46)
真
Related Posts
- Java - AtomicReference使用方法
- Java - CountDownLatchを使用する方法、および例
- Java - ScheduledThreadPoolExecutor使用方法
- Java - SummaryStatisticsの使用方法(count、min、max、average)
- Java8 - 関数型インタフェース (Functional Interface) について
- Java - String配列をint配列に変換する
- Java - ArrayList要素の値を変更する方法、replaceAll()
- Java - 2つのリストが同じかどうかを比較
- Java - 配列から特定のIndex要素を削除する3つの方法
- Java - HashMapソート、4つの方法
- Java - 文字列を配列に変換する方法
- Java - ArrayListが空であることを確認する3つの方法
- Java - ArrayListの巡回、4つの方法
- Java - ArrayListの最大値、最小 値を見つける
- Java - ArrayListの合計、平均値の計算
- Java - HashMap巡回、3つの方法
- Java - do whileとwhileの違い
- Java - Lambda式と関数型インタフェース
- Java - List empty(null)チェック、3つの方法
- Java - ArrayListの初期化、4つの方法
- Java - Stream.reduce()の使い方と例
- Java - 2つのマップを結合する(merge、putAll)
- Java - java.util.Dateをjava.sql.Dateに変換する
- Java - ArrayListをStringに変換する
- Java - ClassNotFoundExceptionの発生原因と解決策
- Java - 非静的メソッドは静的コンテキストから参照できません
- Java - NoSuchMethodErrorの原因と解決策
- Java - JSONライブラリを使用する方法(JSONObject、JSONArray)
- Java - byte[]配列をFileに保存
- Java - byte[]の配列をStringに変換
- Java - ファイルのアクセス権を確認し、変更
- Java - 一時フォルダ(Temp directory)パスを取得する
- Javaでシェルスクリプトを実行
- Java - Streamを配列に変換する
- Java - リスト重複排除、2つの方法