5

次のコードで私が間違ったことを誰かに教えてもらえますか?私はエラーを受け取りません-それはただキャッチに直行します。

import java.io.IOException;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;

public class Main {

    public static void main(String[] args) {
         Path source = Paths.get("C:\\Users\\Public\\Pictures\\SamplePictures");
    Path nwdir = Paths.get("D:\\NetbeansProjects\\CopyingFiles\\copiedImages");

    try{
    Files.copy(source, nwdir);
    }catch (IOException e){
        System.out.println("Unsucessful. What a surprise!");
    }
    }
}
4

3 に答える 3

7

Files.copyのJavadocを見ると、次の行に気付くでしょう(強調が追加されています)。

ファイルがディレクトリの場合、ターゲットの場所に空のディレクトリが作成されます(ディレクトリ内のエントリはコピーされません)。このメソッドをwalkFileTreeメソッドとともに使用して、ディレクトリとディレクトリ内のすべてのエントリ、または必要に応じてファイルツリー全体をコピーできます。

したがって、そのwalkFileTreeメソッドを使用する必要があるようです。

(そして、コメント投稿者が言ったように、例外を印刷すると、彼らはしばしば何が悪いのかを教えてくれます!)

于 2012-04-12T15:52:49.507 に答える
4

ディレクトリを別の場所に再帰的にコピーするための NIO Java7 アプローチを探して、ここに来ました。これはFiles.walkFileTree、Jon7 が他の回答で述べたように行うことができます。単純なディレクトリ コピー用に取得したこのコード:

final Path srcDir, final Path dstDir;
Files.walkFileTree(srcDir, new SimpleFileVisitor<Path>() {
    public FileVisitResult visitFile( Path file, BasicFileAttributes attrs ) throws IOException {
        return copy(file);
    }
    public FileVisitResult preVisitDirectory( Path dir, BasicFileAttributes attrs ) throws IOException {
        return copy(dir);
    }
    private FileVisitResult copy( Path fileOrDir ) throws IOException {
        Files.copy( fileOrDir, dstDir.resolve( srcDir.relativize( fileOrDir ) ) );
        return FileVisitResult.CONTINUE;
    }
});

ファイル属性と既存ファイルの上書きも処理する詳細な例については、http://docs.oracle.com/javase/tutorial/essential/io/examples/Copy.javaを参照してください。

于 2014-02-06T13:33:49.527 に答える
2

これは、ある場所から別の場所にファイルをコピーする方法です。

import java.io.IOException;
import static java.nio.file.StandardCopyOption.*;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;

public class App  {

 public static void main(String[] args)
 {
    Path source = Paths.get("E:/myFile.pdf");
    Path nwdir = Paths.get("F:");
    try
    { 
       Files.copy(source, nwdir.resolve(source.getFileName()), REPLACE_EXISTING);
       System.out.println("File Copied");
    }
    catch(IOException e)
    {
        e.printStackTrace();
    }
 }

}
于 2014-08-27T16:49:59.183 に答える