gpt4 book ai didi

java - deleteOnExit 不删除文件

转载 作者:搜寻专家 更新时间:2023-10-30 19:41:36 25 4
gpt4 key购买 nike

我创建了一些文件供临时使用,并将它们用作某些方法的输入。我调用

deleteOnExit() 

在我创建的所有文件上。但是一个文件仍然存在。

我假设这是因为文件仍在使用中,但编译器不会在当前行完成后才转到下一行吗?(单线程)

虽然由于 java 覆盖而实际上不是问题,但始终只有一个文件。我想了解为什么会发生这种情况,以及我是否可以使用

 Thread.sleep(sometime);

编辑:-

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

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

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

除最后一个文件外的所有文件都被删除。

最佳答案

确保正在写入文件的任何流都已关闭。如果流没有关闭,文件将被锁定并且 delete 将返回 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<File> fileList = new ArrayList<File>();

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();
}
}
}
}
}

关于java - deleteOnExit 不删除文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24758520/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com