File.createNewFile和 File.createTempFile比较和区别
原文地址:http://wzhiju.iteye.com/blog/1119037
最近,在看代码时看到了一个方法, File.createTempFile() ,由此联想到File.createNewFile() 方法,一时间不知道两者到底有什么区别,感觉都是创建新文件嘛,后来查看api文档介绍,并经过自己动手试验,终于有了一个较为清楚地认识。
1. File 的 createNewFile() 方法:
createNewFile();返回值为 boolean;
方法介绍:当且仅当不存在具有此抽象路径名指定名称的文件时,不可分地创建一个新的空文件。
使用:
File file = new File("D:\\test\\1.txt");
boolean res = file.createNewFile();
if(!res)System.out.println("创建失败!");
如果D:/test 目录下没有 1.txt文件,则创建该文件;如果没有test目录,直接抛出异常,如果1.txt已经存在,那么文件创建失败。
可以得知,createNewFile() 方法,根据抽象路径创建一个新的空文件,当抽象路径指定的文件存在时,创建失败。
2. File 的 createTempFile() 方法
该方法有两种调用方式:
createTempFile(String prefix, String suffix);
在默认临时文件目录中创建一个空文件,使用给定前缀和后缀生成其名称。
createTempFile(String prefix, String suffix, File directory);
在指定目录中创建一个新的空文件,使用给定的前缀和后缀字符串生成其名称。
File file2 = new File("D:\\temp");// D;/temp 为一个目录
File tempFile1= file2.createTempFile("msg", ".tmp",file2);
File tempFile2 = file2.createTempFile("msg", ".tmp");
System.out.println(tempFile2.getAbsolutePath());
public static void main(String[] args) { String ticket = UUID.randomUUID().toString(); try { File file = File.createTempFile(String.join("", "tmp", ticket.replaceAll("-", "")), ".xlsx"); System.out.println(file.getAbsolutePath()); } catch (IOException e) { e.printStackTrace(); } }
mac 下打印的结果是:
/var/folders/hp/gjfwlhl162x729ljrtgz9n380000gn/T/tmpd4405704ab0a44c7995fde41b27896ab8696768970239222800.xlsx
可以这么认为,createTempFile() 方法,在指定的目录下创建一个temp文件,directory 类型为File ,如果路径不存在,则创建失败。createTempFile(String prefix, String suffix);
windows下,createTempFile方法默认的保存路径为:C:\Documents and Settings\Administrator\Local Settings\Temp 。
https://blog.csdn.net/dodod2012/article/details/80474056