【问题标题】:Java File IO + relative paths + NetBeansJava 文件 IO + 相对路径 + NetBeans
【发布时间】:2012-05-02 02:07:04
【问题描述】:

很简单:

File account = new File("./data/account");
account.createNewFile();

给我:

java.io.IOException: No such file or directory
  at java.io.UnixFileSystem.createFileExclusively(Native Method)
  at java.io.File.createNewFile(File.java:900)
  ...

为什么 file.createNewFile() 会给我一个 IOException 和消息 No such file or directory?我告诉它创建文件。

在 NetBeans 之外运行此代码似乎没有问题,NetBeans 不能处理相关文件链接吗?

提前感谢您的帮助!

【问题讨论】:

  • 目录./data是否存在?
  • 。在 Netbeans 中运行时,可能会引用与命令行不同的目录。
  • @Jeffrey 。我现在感觉有点像白痴,没有./data不存在。在我将项目迁移到 netbeans 之前它确实如此,这可以解释它......谢谢!

标签: java netbeans file-io


【解决方案1】:

如果./data 不存在,该调用将失败。

File f = new File("./data/account");
if(!f.getParentFile().exists()) { // if the directories don't exist
    if(!f.getParentFile().mkdirs()) { // if making the directories fails
        // directories weren't created, throw exception or something
    }
}
f.createNewFile();

【讨论】:

  • 酷。谢谢。欣赏它。如果当前路径确实存在,这是否会产生任何不良影响?
【解决方案2】:

Netbeans 正在运行 dist 文件夹中的 java 程序。您需要在其中创建 data 文件夹。但是,我相信在某些情况下,Netbeans 会清除整个文件夹并因此将其删除。我会使用绝对路径。

【讨论】:

  • 假设为了避免这个问题,如果account 尚不存在,我想创建它,并且还要创建./data
  • 那将是最安全的路线。
猜你喜欢
  • 1970-01-01
  • 2012-01-28
  • 1970-01-01
  • 1970-01-01
  • 2013-10-29
  • 2013-09-06
  • 2018-05-05
  • 2013-08-21
  • 2013-07-11
相关资源
最近更新 更多