java deleteonexit_java – deleteOnExit不删除文件

我创建了一些临时使用的文件,并将它们用作某些方法的输入.我打电话给

deleteOnExit()

在我创建的所有文件上.但仍有一个档案.

我假设这是因为文件仍然在使用,但编译器只在当前行完成后才进入下一行?(单线程)

虽然实际上由于java覆盖不是问题,但总是只有一个文件.我想了解它为什么会发生,如果我可以使用的话

Thread.sleep(sometime);

编辑:-

File x = new file("x.txt");

new class1().method1();

创建所有文件(5)后,我刚添加了这一行

x.deleteOnExit(); y.deletOnExit() and so on...

删除除最后一个文件之外的所有文件.

最佳答案

确保关闭正在写入文件的任何流.如果流未关闭,则文件将被锁定,删除将返回false.这是我遇到的一个问题.希望这会有所帮助.

import java.io.BufferedReader;

import java.io.BufferedWriter;

import java.io.File;

import java.io.FileReader;

import java.io.FileWriter;

import java.io.IOException;

import java.io.StringWriter;

import java.text.SimpleDateFormat;

import java.util.ArrayList;

import java.util.Date;

import java.util.List;

public class Test {

public static void main(String[] args) {

File reportNew = null;

File writeToDir = null;

BufferedReader br = null;

BufferedWriter bw = null;

StringWriter sw = null;

List fileList = new ArrayList();

SimpleDateFormat ft = new SimpleDateFormat("yyyymmdd_hh_mm_ss_ms");

try {

//Read report.new file

reportNew = new File("c:\temp\report.new");

//Create temp directory for newly created files

writeToDir = new File("c:\temp");

//tempDir.mkdir();

//Separate report.new into many files separated by a token

br = new BufferedReader(new FileReader(reportNew));

sw = new StringWriter();

new StringBuilder();

String line;

int fileCount = 0;

while (true) {

line=br.readLine();

if (line == null || line.contains("%PDF")) {

if (!sw.toString().isEmpty()) {

fileCount++;

File _file = new File(writeToDir.getPath()

+ File.separator

+ fileCount

+ "_"

+ ft.format(new Date())

+ ".htm");

_file.deleteOnExit();

fileList.add(_file);

bw = new BufferedWriter(new FileWriter(_file));

bw.write(sw.toString());

bw.flush();

bw.close();

sw.getBuffer().setLength(0);

System.out.println("File "

+ _file.getPath()

+ " exists "

+ _file.exists());

}

if (line == null)

break;

else

continue;

}

sw.write(line);

sw.write(System.getProperty("line.separator"));

}

} catch ( Exception e) {

e.printStackTrace();

} finally {

if (bw != null) {

try {

bw.close();

} catch (IOException e) {

e.printStackTrace();

}

}

}

}

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值