创建新的File实例会导致创建空文件吗?

时间:2016-10-20 11:59:12

标签: java file

我读了Filejavadoc。这是在那里写的:

  

通过转换给定的路径名​​字符串来创建新的File实例   成为一个抽象的路径名。如果给定的字符串是空字符串,   然后结果是空的抽象路径名。

问题:是否保证如果文件不存在则不会创建空文件或者它取决于系统?我在RedHat linux上尝试过它,只有在创建OutputStream后才会创建一个空文件。

从java到我并不明显。

2 个答案:

答案 0 :(得分:4)

是的,保证不会通过调用new File()来创建文件。如果您拨打createNewFile(),就会创建。

模式可能是:

File f = new File(filePathString);
if(f.exists() && !f.isDirectory()) { 
    // do something
} else {
    f.createNewFile();
}

答案 1 :(得分:1)

当您查看构造函数中的源代码时,您会看到创建一个新的File实例只是初始化一些内部变量:

public File(String pathname) {
    if (pathname == null) {
        throw new NullPointerException();
    }
    this.path = fs.normalize(pathname);
    this.prefixLength = fs.prefixLength(this.path);
}

因此,只创建一个新的File对象不会导致创建新文件。