为什么Java不能在我的Ubuntu桌面上创建这个文件?

0 java file-io ioexception ext4 ubuntu-12.04

我的文件系统上有以下现有的目录结构(使用ext4的Ubuntu 12.04桌面):

/
    home/
        myuser/
            .myapp/
                logs/
                    myapp.log
                data/
                lib/
Run Code Online (Sandbox Code Playgroud)

...以及以下Java代码:

try {
    // If no such file exists, create it and write zero (0) to it.
    if(!myFile.exists()) {
        System.out.println("myFile is: " + myFile.getAbsolutePath());
        myFile.createNewFile();
        myFileWriter.write("0"); // Configured to write to myFile
    }
} catch(IOException ioExc) {
    logger.error(ExceptionUtils.getStackTrace(ioExc));
    throw new RuntimeException(ioExc);
}
Run Code Online (Sandbox Code Playgroud)

......抛出以下异常:

myFile is: /home/myuser/.myapp/data/replay/Loader-0-replay.log
java.lang.RuntimeException: java.io.IOException: No such file or directory
    at net.myuser.myapp.tools.myapp.Loader.<init>(Loader.java:69)
    at net.myuser.myapp.tools.myapp.MyAppTool.loadWords(MyAppTool.java:125)
    at net.myuser.myapp.tools.myapp.MyAppTool.run(MyAppTool.java:65)
    at net.myuser.myapp.tools.myapp.MyAppTool.main(MyAppTool.java:41)
Caused by: java.io.IOException: No such file or directory
    at java.io.UnixFileSystem.createFileExclusively(Native Method)
    at java.io.File.createNewFile(File.java:900)
    at net.myuser.myapp.tools.myapp.Loader.<init>(Loader.java:62)
    ... 3 more
Run Code Online (Sandbox Code Playgroud)

这里发生了什么?它说" 没有这样的文件或目录 ",但这不是createNewFile()应该为我做的吗?提前致谢!

Mad*_*nan 5

/home/myuser/.myapp/data/ replay /Loader-0-replay.log

我没有在你给出的目录列表中看到'重播'.

尝试从myFile获取父文件,然后调用File.mkdirs().