美文网首页互联网科技Java 杂谈
Java当中如何优雅地处理临时文件?

Java当中如何优雅地处理临时文件?

作者: java菲 | 来源:发表于2019-06-28 13:48 被阅读1次

一、背景

最近接手了同事的代码,发现他是这样处理excel文件的:

1、将文件保存到一个事先定义好的目录;如果目录不存在则新建

2、使用excel处理工具根据文件路径读取文件内容之后处理业务逻辑

3、编写一个定时任务每天凌晨1点删除该目录内的.xlsx文件复制代码

这样虽然可以达到效果,但实在是繁琐至极,非常不优雅。其实jdk中就提供了处理临时文件(Temporary File)的方法,现在让我们来看一看。

二、创建临时文件

在java中创建临时文件有许多场景,但是大多数是在单元测试或者是对上传的文件进行内容处理。当测试用例或者文件处理完成后,你并不关心文件是否还存在。况且持续累积的无效文件无疑会浪费许多磁盘空间。

1、通过使用java.io.File.createTempFile()创建临时文件

publicclassTemporaryFileExample{publicstaticvoidmain(String[] args){   

   File temp;try{      

  temp = File.createTempFile("myTempFile",".txt");             

  System.out.println("Temp file created : "+ temp.getAbsolutePath());     

  }catch(IOException e)      {       

 e.printStackTrace();     

 }  

 }

}

windows系统中的输出: C:\Users\admin\AppData\Local\Temp\myTempFile7295261447112135643.txt

2、通过使用NIO创建临时文件

publicclassTemporaryFileExample{publicstaticvoidmain(String[] args){

try{

finalPath path = Files.createTempFile("myTempFile",".txt");       

 System.out.println("Temp file : "+ path);                

}catch(IOException e)      {        

 e.printStackTrace();      

 }

}

windows系统中的输出: C:\Users\admin\AppData\Local\Temp\myTempFile3492283537103788196.txt

三、写入临时文件

比如在文件上传的时候,我们就可以将字节流写入临时文件当中。

1、使用java.io.BufferedWriter写入临时文件

importjava.io.BufferedWriter;importjava.io.File;importjava.io.FileWriter;importjava.io.IOException;publicclassTemporaryFileExample{

publicstaticvoidmain(String[] args){     

 File temp;try{       

 temp = File.createTempFile("myTempFile",".txt");         

 BufferedWriter bw =newBufferedWriter(newFileWriter(temp));       

 bw.write("This is the temporary data written to temp file");      

  bw.close();         

 System.out.println("Written to Temp file : "+ temp.getAbsolutePath());     

 }catch(IOException e)      {      

  e.printStackTrace();      } 

 }

}

2、使用NIO写入临时文件

如果你要使用java NIO库,你就可以使用Files.write()方法

publicclassTemporaryFileExample{

publicstaticvoidmain(String[] args){

try{

finalPath path = Files.createTempFile("myTempFile",".txt");        

System.out.println("Temp file : "+ path);byte[] buf ="some data".getBytes();       

 Files.write(path, buf);     

 }catch(IOException e)      {        

 e.printStackTrace();     

 }  

 }

}

四、删除临时文件

删除临时文件是非常重要的一步,因为你不想让你的磁盘空间爆炸。 为了当在应用exit时(jvm终止)删除文件,你可以使用:

File temp = File.createTempFile("myTempFile",".txt");temp.deleteOnExit();

或者如果你想要立马删除文件,你可以直接使用delete()方法

File temp = File.createTempFile("myTempFile",".txt");temp.delete();

1、使用IO删除临时文件

importjava.io.File;importjava.io.IOException;publicclassTemporaryFileExample{publicstaticvoidmain(String[] args){      

File temp;try{        

 temp = File.createTempFile("myTempFile",".txt");                  

System.out.println("Temp file created : "+ temp.getAbsolutePath());

//temp.delete();

 //立即删除temp.deleteOnExit();

//运行结束时删除System.out.println("Temp file exists : "+ temp.exists());    

  }catch(IOException e)      {       

 e.printStackTrace();   

   } 

 }

}

2、使用NIO删除临时文件

publicclassTemporaryFileExample{

publicstaticvoidmain(String[] args){

try{

finalPath path = Files.createTempFile("myTempFile",".txt");       

 System.out.println("Temp file : "+ path);

// Files.delete(path); 

 //立即删除文件Files.deleteIfExists(path);                                 

 }catch(IOException e)      {      

  e.printStackTrace();     

 }  

 }

}

相关文章

  • Java当中如何优雅地处理临时文件?

    一、背景 最近接手了同事的代码,发现他是这样处理excel文件的: 1、将文件保存到一个事先定义好的目录;如果目录...

  • Exception

    Java 中 9 个处理 Exception 的最佳实践 Java 中的异常和处理详解 如何优雅的设计 Java ...

  • java8 -CompletableFuture

    新颖的、优雅的异步处理数据的方法 Java SE 8为Java平台带来了许多新东西,其中很多已经在生产环境当中得到...

  • 如何优雅地在 Java 8 中处理异常

    前言 Java 8 引入的流 (Stream) API 和 lambda 表达式为我们打开了新世界的大门,自此之后...

  • 如何优雅地在 Java 8 中处理异常

    前言 Java 8 引入的流 (Stream) API 和 lambda 表达式为我们打开了新世界的大门,自此之后...

  • 如何优雅

    如何优雅?这是一个很流行,也很值得追问的问题。 如何优雅地读书?如何优雅地喝茶?如何优雅地跑步?如何优雅地追求女神...

  • 如何优雅的处理异常(java)?

    Java中异常提供了一种识别及响应错误情况的一致性机制,有效地异常处理能使程序更加健壮、易于调试。异常之所以是一种...

  • Java 如何优雅地使用close()

    注:本文出自博主 Chloneda:个人博客 | 博客园 | Github | Gitee | 知乎本文源链接:h...

  • 如何优雅地使用 KVO

    如何优雅地使用 KVO 如何优雅地使用 KVO

  • 一个简单的带中断策略的Thread用例

    使用: 如何优雅的"停止"一个正在运行的JAVA线程如何正确地停止一个线程?关闭线程的正确方法:“优雅”的中断Ja...

网友评论

    本文标题:Java当中如何优雅地处理临时文件?

    本文链接:https://www.haomeiwen.com/subject/pgmscctx.html