Java で現在のディレクトリから新しいディレクトリにファイルを移動する
-
Java NIO の
Files.move()
メソッドを使用して、現在のディレクトリから新しいディレクトリにファイルを移動する -
renameTo()
メソッドを使用して、現在のディレクトリから新しいディレクトリにファイルを移動する
このチュートリアルでは、Java でファイルを移動するさまざまな方法を紹介します。ファイルをあるディレクトリから別のディレクトリにローカルに(同じマシン上で)移動する 2つの方法について学習します。
これらのメソッドには、Java NIO(New Input Output)パッケージの Files.move()
メソッドと、Java.io.File パッケージに含まれている renameTo()
メソッドが含まれます。
Java NIO の Files.move()
メソッドを使用して、現在のディレクトリから新しいディレクトリにファイルを移動する
Java 7 以降を使用している場合は、次のソリューションを使用できます。
コード例:
import java.io.IOException;
import java.nio.file.*;
public class MoveFile {
public static void main(String[] args) {
Path sourcePath = Paths.get("./moveFile.txt");
Path targetPath = Paths.get(System.getProperty("user.home") + "/Desktop/Files/moveFile.txt");
try {
Files.move(sourcePath, targetPath);
} catch (FileAlreadyExistsException ex) {
System.out.println("The target path already has a target file");
} catch (IOException exception) {
System.out.format("I/O error: %s%n", exception);
}
}
}
main
メソッドには、移動する必要のあるファイルのソースパスとターゲットパスが必要です。Paths.get()
メソッドを使用してソースファイルのパスを取得し、それを sourcePath
という名前の Path
型変数に保存します。
次に、Paths.get()
メソッドを再度使用して、目的の場所と、System.getProperty("user.home")
を使用してアクセスするユーザーのホームディレクトリを連結することにより、ターゲットパスを取得します。
Files.move()
メソッドは、移動する必要のあるファイルのソースパスとターゲットパスを取得し、ファイルの名前を変更せずに、ファイルを sourcePath
から targetPath
に移動します。
Files.move()
メソッドは、IOException
または FileAlreadyExistsException
を引き起こす可能性があるため、try
ブロックで囲まれています。ただし、これらの例外は catch
ブロックで適切に処理されます。
FileAlreadyExistException
を回避したい場合は、次のように REPLACE_EXISTING
オプションを使用して、targetPath
でファイルを置き換えることができます。
Files.move(sourcePath, targetPath, StandardCopyOption.REPLACE_EXISTING);
また、targetPath
に新しい名前のファイルが必要な場合は、sourcePath
と targetPath
を同じままにしますが、ファイルの名前は次のようにのみ変更します。
Path sourcePath = Paths.get("./moveFile.txt");
Path targetPath = Paths.get(System.getProperty("user.home") + "/Desktop/Files/newMoveFile.txt");
renameTo()
メソッドを使用して、現在のディレクトリから新しいディレクトリにファイルを移動する
Java 6 を使用している場合は、次のソリューションが推奨されます。
コード例:
import java.io.*;
public class MoveFile {
public static void main(String[] args) {
File file = new File(".\\moveFile.txt");
if (file.renameTo(new File("E:\\moveFile.txt"))) {
System.out.println("File is moved successfully");
} else {
System.out.println("File is not moved");
}
}
}
このコードスニペットは、renameTo()
メソッドを使用して、指定されたファイルをある場所から別の場所に移動します。
renameTo()
メソッドは、新しい抽象宛先パスを取得し、ファイルの名前を変更し(新しい名前を指定したが、このソリューションでは名前を変更しない場合)、ファイルをターゲットの場所に移動します。
ファイルが正常に移動された場合は true を返し、ファイルが移動されたことを示すメッセージを出力し、指定されたファイルが移動されなかった場合は警告を表示します。上記のコードが表示される場合があります。