最近接手了同事的代码,发现他是这样处理excel文件的:java
1. 将文件保存到一个事先定义好的目录;若是目录不存在则新建
2. 使用excel处理工具根据文件路径读取文件内容以后处理业务逻辑
3. 编写一个定时任务天天凌晨1点删除该目录内的.xlsx文件
复制代码
这样虽然能够达到效果,但实在是繁琐至极,很是不优雅。其实jdk中就提供了处理临时文件(Temporary File)的方法,如今让咱们来看一看。windows
在java中建立临时文件有许多场景,可是大多数是在单元测试或者是对上传的文件进行内容处理。当测试用例或者文件处理完成后,你并不关心文件是否还存在。何况持续累积的无效文件无疑会浪费许多磁盘空间。jvm
public class TemporaryFileExample {
public static void main(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工具
public class TemporaryFileExample {
public static void main(String[] args) {
try
{
final Path 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单元测试
好比在文件上传的时候,咱们就能够将字节流写入临时文件当中。测试
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileWriter;
import java.io.IOException;
public class TemporaryFileExample {
public static void main(String[] args) {
File temp;
try
{
temp = File.createTempFile("myTempFile", ".txt");
BufferedWriter bw = new BufferedWriter(new FileWriter(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();
}
}
}
复制代码
若是你要使用java NIO库,你就能够使用Files.write()方法spa
public class TemporaryFileExample {
public static void main(String[] args) {
try
{
final Path 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终止)删除文件,你能够使用:excel
File temp = File.createTempFile("myTempFile", ".txt");
temp.deleteOnExit();
复制代码
或者若是你想要立马删除文件,你能够直接使用delete()
方法code
File temp = File.createTempFile("myTempFile", ".txt");
temp.delete();
复制代码
import java.io.File;
import java.io.IOException;
public class TemporaryFileExample {
public static void main(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();
}
}
}
复制代码
public class TemporaryFileExample {
public static void main(String[] args) {
try
{
final Path path = Files.createTempFile("myTempFile", ".txt");
System.out.println("Temp file : " + path);
// Files.delete(path); //当即删除文件
Files.deleteIfExists(path);
} catch (IOException e)
{
e.printStackTrace();
}
}
}
复制代码