web-dev-qa-db-ja.com

Files.copy(Path、Path)はディレクトリを作成しますか?

Javaプログラム(C:/Users/Java/dir1)?
txtファイルをまだ作成されていない新しいディレクトリに移動したい。すべてのファイルの文字列アドレスがあり、を使用してそれらをパスに変換できると思います

パスパス= Paths.get(textPath);

文字列を作成しますか(C:/Users/Java/dir2)、上記の方法を使用してそれをパスに変換し、次に

Files.copy(C:/Users/Java/dir1/ss1.txt,C:/ Users/Java/dir2) ==

結果 ss1.text新しいディレクトリにコピーされていますか?

11
knowads

メソッドFiles.copy(C:/Users/Java/dir1/ss1.txt,C:/Users/Java/dir2)はディレクトリを作成せず、ディレクトリJavaにss1.txtデータを含むファイルdir2を作成します。

あなたはこのコードでそれを試すことができます:

File sourceFile = new File( "C:/Users/Java/dir1/ss1.txt" );
Path sourcePath = sourceFile.toPath();

File destFile = new File( "C:/Users/Java/dir2" );
Path destPath = destFile.toPath();

Files.copy( sourcePath, destPath );

Java.nio.file.FilesとJava.nio.file.Pathを使用することを忘れないでください。

クラス形式のJava.nioを使用して、あるディレクトリから別のディレクトリにファイルをコピーする場合は、Files.walkFileTree(...)メソッドを使用する必要があります。ここで解決策を見ることができます Java:nio Files.copyを使用してディレクトリを移動する

または、Apacheの `FileUtilsクラスを使用することもできます http://commons.Apache.org/proper/commons-io/ ライブラリ、バージョン1.2以降で利用可能。

File source = new File("C:/Users/Java/dir1");
File dest = new File("C:/Users/Java/dir2");
try {
    FileUtils.copyDirectory(source, dest);
} catch (IOException e) {
    e.printStackTrace();
}
5
Mateusz Sroka

これは Files.createDirectories() で非常に簡単です

Path source = Path.of("c:/dir/dir-x/file.ext");
Path target = Path.of("c:/target-dir/dir-y/target-file.ext");
Files.createDirectories(target.getParent());
Files.copy(path, target, StandardCopyOption.REPLACE_EXISTING);    

そして、ディレクトリがすでに存在していても心配しないでください。その場合、何もせずに続行します...

9
Daniel De León