1

我正在 C: 驱动器文件夹中创建一个名为 abc 的 dat 文件,如下所示,现在我的文件每天生成现在假设如果我的文件是今天生成的,那么 tommrow 它也将照常生成但是当 tommrow 它生成时我必须确保删除较早的文件,因为该文件夹中的空间有限,并且每次都需要执行此检查才能从该文件夹中删除前一天的文件,请告知如何实现此目的..

File file = new File(FilePath + getFileName()); //filepath is being passes through //ioc         //and filename through a method 


        if (!file.exists()) {
            file.createNewFile();
        }

FileOutputStream fileOutput = new FileOutputStream(
                file);

        BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(
                fileOutput));
4

4 回答 4

7

为什么不使用file.delete()

File file = new File(FilePath + getFileName()); //filepath is being passes through //ioc         //and filename through a method 

if (file.exists()) {
     file.delete(); //you might want to check if delete was successfull
}
file.createNewFile();

FileOutputStream fileOutput = new FileOutputStream(file);

BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(fileOutput));
于 2013-08-22T06:45:05.777 回答
2

如果你的文件名不时相同就不需要删除了。通过明天运行您的代码,将覆盖今天创建的文件。

考虑以下情况

    BufferedWriter bw=new BufferedWriter(new FileWriter("D:\\Test\test.txt"));
    bw.write("abbbb");
    bw.close();  // now this will create a test.txt in side Test folder

现在通过更改写入字符串来运行它

    BufferedWriter bw=new BufferedWriter(new FileWriter("D:\\test.txt"));
    bw.write("hihi");
    bw.close(); // now you can see file only containing hihi
于 2013-08-22T06:46:38.660 回答
1

您可以通过以下方式更改代码:

 if (file.exists()) {
      file.delete();
 }
 file.createNewFile();

如果它不起作用,那就是许可问题。

于 2013-08-22T06:47:11.477 回答
0

如果您使用的是 Java 7,那么有标准的方法来获取文件创建时间,这样您就可以检查文件是否是在前一天创建的并且应该被删除。

    Path path = Paths.get("/filepath/");
    BasicFileAttributes fileAttributes = Files.readAttributes(path, BasicFileAttributes.class);
    System.out.println("creationTime:"+ fileAttributes.creationTime());
于 2013-08-22T06:42:45.783 回答