0

既存のディレクトリ構造をコピーしようとしています (ファイルの内容自体は必要ありません。長さ 0 のダミー ファイルで十分です)。ただしmkdirs()、必要なディレクトリを作成しないためfile.createNewFile()IOException. コードは次のとおりです。

private static void readAndCopy(File fileToCopy) throws IOException {
    File localVersion = new File(fileToCopy.getCanonicalPath().replace("O:\\", "C:\\xfer\\"));
    System.out.println("Replicating " + fileToCopy.getCanonicalPath() + " to " + localVersion.getCanonicalPath());

    if (fileToCopy.isDirectory()) {
        boolean dirCreated = localVersion.getParentFile().mkdirs();
        System.out.println(localVersion.getCanonicalPath() + " " + (dirCreated ? "" : "not ") + "created");

        if (dirCreated) {
            for (File content : fileToCopy.listFiles()) {
                readAndCopy(content);
            }
        }

    } else {
        if (!localVersion.exists()) {
            localVersion.createNewFile();
        }
    }
}

public static void main(String[] args) throws IOException {
    readAndCopy(new File("o:\\MY_SRC_DIR"));
}

エラーメッセージは次のとおりです。

java.io.IOException: The system cannot find the path specified
    at java.io.WinNTFileSystem.createFileExclusively(Native Method)
    at java.io.File.createNewFile(Unknown Source)

私も試しました

File origParentFile = fileToCopy.getParentFile();
File newParent = new File(origParentFile.getCanonicalPath().replace("O:\\", "C:\\xfer\\"));
localVersion = new File(newParent, fileToCopy.getName());

、しかし、それもうまくいきませんでした。

4

1 に答える 1

1

あなたは間違っています。'mkdirs() is creating all the directories including the file name itself as a directory. You need to calllocalVersion.getParentFile().mkdirs().`

于 2013-05-07T10:17:09.680 に答える