createNewFile和createTempFile

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了createNewFile和createTempFile相关的知识,希望对你有一定的参考价值。

请问createNewFile和createTempFile有何区别呢?不都是创建文件?谢谢!

File.createNewFilefile类的createnewfile根据抽象路径创建一个新的空文件,当抽象路径制定的文件存在时,创建失败

File.createTempFile 的用途是你想要建立一个档案暂时使用,但是你不在乎其精确的档案名,只要不覆盖到已存在的档案时。可以制定临时文件的文件名前缀、后缀及文件所在的目录,如果不指定目录,则存放在系统的临时文件夹下。
参考技术A File f = File.createTempFile("Prefix", "");
System.out.println(f.getAbsolutePath());
看看结果,感受一下
参考技术B createNewFile
当且仅当不存在具有此抽象路径名指定的名称的文件时,原子地创建由此抽象路径名指定的一个新的空文件。检查文件是否存在,如果不存在则创建该文件,这是单个操作,对于其他所有可能影响该文件的文件系统活动来说,该操作是原子的。
createTempFile
在默认临时文件目录中创建一个空文件,使用给定前缀和后缀生成其名称

Java的createNewFile() - 它还会创建目录吗?

我有条件在继续之前检查某个文件是否存在(./logs/error.log)。如果找不到,我想创建它。但是,会的

File tmp = new File("logs/error.log");
tmp.createNewFile();

如果它不存在,还会创建logs/

答案

没有。 在创建文件之前使用tmp.getParentFile().mkdirs()

另一答案
File theDir = new File(DirectoryPath);
if (!theDir.exists()) theDir.mkdirs();
另一答案
File directory = new File(tmp.getParentFile().getAbsolutePath());
directory.mkdirs();

如果目录已经存在,则不会发生任何事情,因此您不需要任何检查。

另一答案

Java 8风格

Path path = Paths.get("logs/error.log");
Files.createDirectories(path.getParent());

写入文件

Files.write(path, "Log log".getBytes());

阅读

System.out.println(Files.readAllLines(path));

完整的例子

public class CreateFolderAndWrite {

    public static void main(String[] args) {
        try {
            Path path = Paths.get("logs/error.log");
            Files.createDirectories(path.getParent());

            Files.write(path, "Log log".getBytes());

            System.out.println(Files.readAllLines(path));
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}
另一答案

StringUtils.touch(/path/filename.ext)现在(> = 1.3)也会创建目录和文件(如果它们不存在)。

另一答案

不,如果logs不存在,你会收到java.io.IOException: No such file or directory

Android devs的有趣事实:调用Files.createDirectories()Paths.get()之类的东西在支持min api 26时会起作用。

以上是关于createNewFile和createTempFile的主要内容,如果未能解决你的问题,请参考以下文章

createNewFile和createTempFile

mkdir() mkdirs() createNewFile

File类的createNewFile()和mkdirs() mkdir()

java中createNewFile怎么使用?

Java 的 createNewFile() - 它还会创建目录吗?

Java createNewFile 不能在本地网络上工作