web-dev-qa-db-ja.com

Javaでファイルをある場所から別の場所に移動するにはどうすればよいですか?

ファイルをある場所から別の場所に移動するにはどうすればよいですか?プログラムを実行すると、その場所で作成されたファイルは指定された場所に自動的に移動します。移動されたファイルを確認するにはどうすればよいですか?

前もって感謝します!

78
pmad
myFile.renameTo(new File("/the/new/place/newName.file"));

File#renameTo はそれを行います(名前の変更だけでなく、少なくとも同じファイルシステム上でディレクトリ間を移動することもできます)。

この抽象パス名が示すファイルの名前を変更します。

このメソッドの動作の多くの側面は、本質的にプラットフォームに依存します。名前変更操作は、あるファイルシステムから別のファイルシステムにファイルを移動できない場合があり、アトミックではない場合があります。もう存在している。戻り値を常にチェックして、名前変更操作が成功したことを確認する必要があります。

より包括的なソリューション(ディスク間でファイルを移動する場合など)が必要な場合は、Apache Commons FileUtils#moveFile をご覧ください。

110
Thilo

Java 7以降では、Files.move(from, to, CopyOption... options)を使用できます。

例えば。

Files.move(Paths.get("/foo.txt"), Paths.get("bar.txt"), StandardCopyOption.REPLACE_EXISTING);

詳細については Files のドキュメントをご覧ください

57
micha

ファイルを移動するには、Jakarta Commons IOも使用できます FileUtils.moveFile

エラーが発生するとIOExceptionがスローされるため、例外がスローされなければ、ファイルが移動されたことがわかります。

5
DerMike

ソースと宛先のフォルダパスを追加するだけです。

すべてのファイルとフォルダーをソースフォルダーから宛先フォルダーに移動します。

    File destinationFolder = new File("");
    File sourceFolder = new File("");

    if (!destinationFolder.exists())
    {
        destinationFolder.mkdirs();
    }

    // Check weather source exists and it is folder.
    if (sourceFolder.exists() && sourceFolder.isDirectory())
    {
        // Get list of the files and iterate over them
        File[] listOfFiles = sourceFolder.listFiles();

        if (listOfFiles != null)
        {
            for (File child : listOfFiles )
            {
                // Move files to destination folder
                child.renameTo(new File(destinationFolder + "\\" + child.getName()));
            }

            // Add if you want to delete the source folder 
            sourceFolder.delete();
        }
    }
    else
    {
        System.out.println(sourceFolder + "  Folder does not exists");
    }
4
manjeet lama

File.renameTo from Java IOを使用して、Javaでファイルを移動できます。 this SO question も参照してください。

4
Piotr

Java 6

public boolean moveFile(String sourcePath, String targetPath) {

    File fileToMove = new File(sourcePath);

    return fileToMove.renameTo(new File(targetPath));
}

Java 7(NIOを使用)

public boolean moveFile(String sourcePath, String targetPath) {

    boolean fileMoved = true;

    try {

        Files.move(Paths.get(sourcePath), Paths.get(targetPath), StandardCopyOption.REPLACE_EXISTING);

    } catch (Exception e) {

        fileMoved = false;
        e.printStackTrace();
    }

    return fileMoved;
}
3
Pranav V R

そのタスク用の外部ツール(Windows環境のcopyなど)を実行できますが、コードの移植性を維持するための一般的なアプローチは次のとおりです。

  1. ソースファイルをメモリに読み込む
  2. コンテンツを新しい場所のファイルに書き込む
  3. ソースファイルを削除する

File#renameToは、ソースとターゲットの場所が同じボリューム上にある限り機能します。個人的には、ファイルを別のフォルダーに移動するために使用することは避けたいです。

2
Andreas_D

これを試して :-

  boolean success = file.renameTo(new File(Destdir, file.getName()));
2
Vijay Gupta
Files.move(source, target, REPLACE_EXISTING);

Filesオブジェクトを使用できます

ファイル の詳細を読む

1
Daniel Taub

このメソッドを書いて、既存のロジックが存在する場合、置換ファイルのみを使用して自分のプロジェクトでこれを実行します。

// we use the older file i/o operations for this rather than the newer jdk7+ Files.move() operation
private boolean moveFileToDirectory(File sourceFile, String targetPath) {
    File tDir = new File(targetPath);
    if (tDir.exists()) {
        String newFilePath = targetPath+File.separator+sourceFile.getName();
        File movedFile = new File(newFilePath);
        if (movedFile.exists())
            movedFile.delete();
        return sourceFile.renameTo(new File(newFilePath));
    } else {
        LOG.warn("unable to move file "+sourceFile.getName()+" to directory "+targetPath+" -> target directory does not exist");
        return false;
    }       
}
0
Joel M