114

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

4

12 に答える 12

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

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

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

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

より包括的な解決策 (ディスク間でファイルを移動したいなど) が必要な場合は、Apache Commons FileUtils#moveFileを参照してください。

于 2011-01-10T09:27:09.173 に答える
74

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

例えば

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

詳細については、ファイルのドキュメントを参照してください

于 2014-05-22T16:55:39.097 に答える
6

File.renameTofrom Java IO を使用して、Java でファイルを移動できます。このSOの質問も参照してください。

于 2011-01-10T09:25:52.627 に答える
5

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

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

    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");
    }
于 2016-03-15T09:59:24.360 に答える
5

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

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

于 2011-01-10T09:30:42.850 に答える
2

そのタスクのために外部ツールを実行することもできますが ( copyWindows 環境の場合と同様)、コードの移植性を維持するための一般的なアプローチは次のとおりです。

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

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

于 2011-01-10T09:28:51.740 に答える