创建临时文件

  • IO 方法
  • NIO 方法

IO 方法

java.io.File.createTempFile(String prefix, String suffix, File directory) 在指定目录创建临时文件,调用 deleteOnExit() 可以删除由该方法创建的文件。

public static File createTempFile(String prefix, String suffix, File directory)

参数说明:

  • prefix 定义文件名,要求至少3个字符,如果太长会自动截断;
  • suffix 定义文件后缀,如果为 null,则以 .tmp 替代;
  • directory 是临时文件所在目录,如果指定的目录不存在,抛出 IOException

文件名由 prefix + “内部随机生成字符(至少5个)”+suffix 组成。

如果 directory 为 null,则使用默认目录,其位置由 java.io.tmpdir 系统属性确定。例如在 Windows 10 系统上:

System.out.println(System.getProperty("java.io.tmpdir"));
// C:\Users\<username>\AppData\Local\Temp\

这个方法一般和 deleteOnExit 配套使用,在使用完临时文件后删除之。

使用示例:

File f = File.createTempFile("tmp", ".txt", new File("D:\\data"));
System.out.println("File path: " + f.getAbsolutePath());
// File path: D:\data\tmp9662249449050851548.txt// deletes file when the virtual machine terminate
f.deleteOnExit();// creates temporary file, if suffix is null, "tmp" is used.
f = File.createTempFile("tmp", null, new File("D:/"));
System.out.println("File path: " + f.getAbsolutePath());
// File path: D:\tmp16530246932214752759.tmp// deletes file when the virtual machine terminate
f.deleteOnExit();// if the directory is null, default temp folder is used (AppData\Local\Temp for Windows)
f = File.createTempFile("tmp", null, null);
System.out.println(f.getAbsolutePath());
// C:\Users\happy\AppData\Local\Temp\tmp1426089657789007888.tmp
f.deleteOnExit();

NIO 方法

java.nio.file.Files 类同样提供了创建临时文件的方法:

public static Path createTempFile(Path dir, String prefix, String suffix, FileAttribute<?>... attrs)

方法签名和 File.createTempFile() 类似,使用 prefixsuffix 生成临时文件名的规则基本也一致。

在使用创建的临时文件时,使用 StandardOpenOption.DELETE_ON_CLOSE 选项打开,在使用后调用合适的 close 方法可以保证该文本被删除。

例1:创建指定后缀的临时文件

Path tempFile = Files.createTempFile("happy", ".lucky");
System.out.println(tempFile);
// C:\Users\happy\AppData\Local\Temp\happy5418717743945248114.lucky

在默认临时文件夹创建临时文件。

例2:不指定前缀

Path tempFile2 = Files.createTempFile(null, ".lucky");
System.out.println(tempFile2);
// C:\Users\happy\AppData\Local\Temp\5335753237959736973.lucky

不指定前缀,对应的临时文件名全部为随机生成字符。

例3:不指定后缀

Path tempFile3 = Files.createTempFile("happy", null);
System.out.println(tempFile3);
// C:\Users\happy\AppData\Local\Temp\happy851462428616511214.tmp

不指定后缀,使用默认后缀 .tmp

例4:指定空后缀

Path tempFile4 = Files.createTempFile("happy", "");
System.out.println(tempFile4);
// C:\Users\happy\AppData\Local\Temp\happy1219941913418435852

指定空后缀,则没有后缀。

Java - 创建临时文件相关推荐

  1. java创建临时文件_用Java创建一个临时文件

    java创建临时文件 The task is to create a temporary file in Java. 任务是用Java创建一个临时文件. Creating a temporary fi ...

  2. java创建临时文件夹_java创建临时文件

    [java]代码库/** * 创建临时文件 * * @param prefix * 临时文件名的前缀 * @param suffix * 临时文件名的后缀 * @param dirName * 临时文 ...

  3. java创建临时文件的路径问题

    创建临时文件使用 createTempFile()方法,有以下问题需要注意: 源码 public static File createTempFile(String fileName, String ...

  4. java创建临时文件夹_如何在Java中创建一个临时目录/文件夹?

    有没有在Java应用程序内部创建临时目录的标准可靠方法? Java的问题数据库中有一个条目,注释中包含一些代码,但是我想知道在一个常用的库(Apache Commons等)中是否找到标准解决方案? # ...

  5. Java 文件操作一(写文件、按行读文件、删除文件、复制文件、追加数据、创建临时文件、修改最后修改日期、获取文件大小)

    文件写入 import java.io.*;public class Main {public static void main(String[] args) {try {BufferedWriter ...

  6. 如何在Java中创建临时文件?

    在Java程序中,有时需要创建临时文件来暂存数据或者执行某些操作.Java提供了许多方式来创建临时文件.在本教程中,我们将介绍如何使用Java标准库来创建临时文件. 一.使用File.createTe ...

  7. java 创建临时临时文件

    import java.io.File; import java.io.IOException;/*** 创建新文件和目录*/ public class CreateFileUtil {/*** 创建 ...

  8. Java从string数组创建临时文件

    //从string数组创建临时文件 private static File createSampleFile(String[] strs) throws IOException {File file ...

  9. 妙用 Intellij IDEA 创建临时文件,Git 跟踪不到的那种

    多数人对于 Intellij IDEA 可能始于其「颜值」,终于其「才华」,外加各种插件 buff 的加成,coding 的节奏分分钟要暴走 抛开自己安装的插件,IDEA 其实也内秀的很,在 Inte ...

最新文章

  1. python中编写无参数decorator
  2. 【JSP EL表达式】动态表达式/表达式拼接
  3. 【转】__declspec用法详解
  4. json 潜逃 结构体_JSON还原为结构体 - osc_t5zhwnvx的个人空间 - OSCHINA - 中文开源技术交流社区...
  5. 千月双端影视APP源码
  6. linux视频嗅探工具,Linux 5.13增加来自英特尔的KCPUID组件 帮助准确识别新推出的CPU...
  7. 武汉理工大学计算机学院宿舍,武汉理工大学专业所属校区及新生住宿分布情况(v2.0)...
  8. 2019年物联网9个趋势和预测
  9. 【夜深人静写代码】倍增算法学习记录
  10. win10linux双系统时间,win10与linux双系统切换时间不一致的调整
  11. win10升级后VMware不能使用,更新升级失败
  12. SQL Server select 英文区分大小写
  13. iconfont 字体图标
  14. 过年别再逼婚了,《黑镜》里的AI相亲系统是对爱情最好的匹配
  15. 以太网接口与地平面设计3种方案
  16. 安卓市场ASO排名优化机制分析,安卓市场的aso优化
  17. MySQL查询优化实例
  18. iOS-OC-自定义融云IM聊天界面,键盘收回去输入工具栏下去
  19. 基于卡方的独立性检验
  20. 单总线是什么以及特点、协议 、使用方法

热门文章

  1. LeetCode066_66. 加一
  2. 开始菜单中无SQL Server配置管理器的解决办法
  3. CAD 样板图形文件路径
  4. 我报了个税,隐私就被扒光了?
  5. git merge(git pull)合并时遇上refusing to merge unrelated histories的解决方案
  6. AG表格基础滚动分页-React版本
  7. 2007年百度之星程序设计大赛试题初赛题目-题4-百度时间
  8. 过驱动保护第一套视频(63课)
  9. AE速度曲线与运动曲线
  10. Skype for business企业语音配置之七 设置呼叫转接