无法使文件java.io.IOException:没有这样的文件或目录

She*_*ari 23 java file ioexception

我试图在文件系统上创建一个文件,但我一直得到这个例外:

java.io.IOException: No such file or directory
Run Code Online (Sandbox Code Playgroud)

我有一个现有的目录,我正在尝试将文件写入该目录.

// I have also tried this below, but get same error
// new File(System.getProperty("user.home") + "/.foo/bar/" + fileName);

File f = new File(System.getProperty("user.home") + "/.foo/bar/", fileName);

if (f.exists() && !f.canWrite())
        throw new IOException("Kan ikke skrive til filsystemet " + f.getAbsolutePath());

if (!f.isFile()) {
    f.createNewFile(); // Exception here
} else {
    f.setLastModified(System.currentTimeMillis());
}
Run Code Online (Sandbox Code Playgroud)

获得例外:

java.io.IOException: No such file or directory
  at java.io.UnixFileSystem.createFileExclusively(Native Method)
  at java.io.File.createNewFile(File.java:883)`
Run Code Online (Sandbox Code Playgroud)

我对路径有写权限,但是没有创建文件.

Boh*_*ian 42

如果该目录../.foo/bar/不存在,则无法在该目录中创建文件,因此请确保首先创建该目录.

尝试这样的事情:

File f = new File("somedirname1/somedirname2/somefilename");
if (!f.getParentFile().exists())
    f.getParentFile().mkdirs();
if (!f.exists())
    f.createNewFile();
Run Code Online (Sandbox Code Playgroud)


duf*_*ymo 21

打印完整文件名或在调试器中单步执行.当我对这样的错误感到困惑时,这意味着我的假设和期望与现实不符.确保你能看到路径是什么; 它会帮助你弄清楚你哪里出错了.

  • 我有足够的地方我不在乎。困扰我的是态度,而不是代表的损失。 (2认同)

小智 9

小心权限,可能你没有其中的一些.你可以在设置中看到它 - > apps - >应用程序的名称 - >权限 - >如果没有则活动.

权限应用


Jig*_*shi 6

尝试用

f.mkdirs()然后createNewFile()

  • 您可以尝试使用 [`File.separator`](http://download.oracle.com/javase/6/docs/api/java/io/File.html#separator) 而不是 '/' (3认同)