首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >java File mkdirs和createNewFile将不起作用

java File mkdirs和createNewFile将不起作用
EN

Stack Overflow用户
提问于 2013-05-07 17:27:01
回答 1查看 1.2K关注 0票数 0

我正在尝试复制现有的目录结构(不需要文件内容本身,长度为0的虚拟文件就可以了)。但是,mkdirs()不会创建必要的目录,从而导致file.createNewFile()抛出IOException。代码是:

代码语言:javascript
运行
复制
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"));
}

错误消息为:

代码语言:javascript
运行
复制
java.io.IOException: The system cannot find the path specified
    at java.io.WinNTFileSystem.createFileExclusively(Native Method)
    at java.io.File.createNewFile(Unknown Source)

我也试过了

代码语言:javascript
运行
复制
File origParentFile = fileToCopy.getParentFile();
File newParent = new File(origParentFile.getCanonicalPath().replace("O:\\", "C:\\xfer\\"));
localVersion = new File(newParent, fileToCopy.getName());

,但这也不起作用。

EN

Stack Overflow用户

发布于 2013-05-07 18:17:10

你弄错了。'mkdirs()is creating all the directories including the file name itself as a directory. You need to calllocalVersion.getParentFile().mkdirs().`

票数 1
EN
查看全部 1 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16415584

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档