TempFilejava中的最大名称长度是多少,MaximumFilesize取决于我们提到要创建的临时目录还是其他一些基于java的机器?
何时调用deleteOnExit()方法---但是这个方法的用途是什么,因为它在JVM关闭时被调用.但是基于生产的服务器将运行24*7.So文件将连续创建,这将是问题所在我们因为内存而创建文件的服务器.
要自动清除比XX秒更早(修改)的临时文件...
import java.io.File;
import java.io.IOException;
import java.util.HashSet;
public class FileAutoCleaner {
final static FileAutoCleaner singleton = new FileAutoCleaner();
final HashSet<File> bag = new HashSet<File>();
public static FileAutoCleaner getInstance() {
return singleton;
}
// This create the temp file and add to bag for checking
public synchronized File createTempFile(String prefix, String suffix) throws IOException {
File tmp = File.createTempFile(prefix, suffix);
tmp.deleteOnExit();
bag.add(tmp);
return tmp;
}
// Periodically call this function to clean old files
public synchronized void cleanOldFiles(final int secondsOld) {
long now = (System.currentTimeMillis() / 1000);
for (File f : bag) {
long expired = (f.lastModified() / 1000) + secondsOld;
if (now >= expired) {
System.out.println("Deleted file=" + f.getAbsolutePath());
f.delete();
bag.remove(f);
}
}
}
public static void main(String[] args) throws Exception {
FileAutoCleaner fac = FileAutoCleaner.getInstance();
System.out.println(System.currentTimeMillis() / 1000);
fac.createTempFile("deleteme", "tmp");
for (int i = 0; i < 5; i++) {
System.out.println(System.currentTimeMillis() / 1000);
// delete if older than 2 seconds
fac.cleanOldFiles(2);
Thread.sleep(1000);
}
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
18023 次 |
| 最近记录: |