以前的文件删除过程

时间:2013-08-30 14:51:08

标签: java file

我陷入了一个奇怪的情况,即我在文件夹中创建一个文件,但我需要确保在创建文件之前,如果文件夹中有任何文件,则必须删除当前文件进程的文件应该在那里。

因为在我的应用程序中每天都会运行一个在该文件夹中创建文件的作业,因此当目前作业正在运行时,它应该删除前一天的文件,并且不应该在afolder中存在任何文件,但下面显示的代码会创建文件在该文件夹但问题是前一天的文件或者如果作业在同一天运行多次,那么那些文件也在文件夹中应该被删除请告知如何实现这一点..

File file = new File(FilePath + s); //path is c:\\abc folder & s is file name fgty.dat file         
if (file.exists()) {
  file.delete(); 
}
file.createNewFile();

请告知

4 个答案:

答案 0 :(得分:1)

在没有看到更多代码的情况下,听起来你只需要在打开新文件之前清空文件夹,因为现在你只是删除了你要编写的确切名称的文件。使用文件对象的list方法。

File newFile = new File(FilePath + s);
for (File f : new File(FilePath).listFiles()) { // For each file in the directory, delete it.
    f.delete();
}
newFile.createNewFile();

请注意,如果您的文件夹包含其他非空目录,则无法使用此功能。你需要一个更强大的解决方案。但上面的代码至少会在创建新文件之前删除文件夹中的所有文件(显然禁止例外)。

如果您在评论中提到,您只想删除*.dat个文件,就像在删除任何内容之前签入一样简单。

for (File f : new File(FilePath).listFiles()) { // For each file in the directory, delete it.
    if (f.getName().endsWith(".dat")) { // Only delete .dat files
        f.delete();
    }
}

答案 1 :(得分:1)

在你的位置我将目录移动到另一个名称,比如abc.OLD,重新创建它,然后创建你的文件。如果一切顺利,最后你可以删除ols目录。

如果程序的不同实例可能同时运行,则需要实现某种形式的同步。一种相当简单的方法可能是检查abc.OLD目录是否存在,如果存在则中止执行。

答案 2 :(得分:0)

File file = new File(FilePath+"test.txt");
File folder = new File(FilePath);
File[] listOfFiles = folder.listFiles();

for(int i = 0; i < listOfFiles.length; i++) {
    if (listOfFiles[i].isFile()) {
        System.out.println("File " + listOfFiles[i].getName());
        listOfFiles[i].delete();
    }
}
    try {
        file.createNewFile();
    } catch (IOException e) {
        e.printStackTrace();  //To change body of catch statement use File | Settings | File Templates.
    }

答案 3 :(得分:0)

首先,我认为您实例化File对象的方式可能会出现问题,因为如果您没有路径分隔符(\),则会尝试创建c:\abcfgty.dat而不是c:\abc\fgty.dat

改为使用:

File file = new File(filePath, s);

然后您可以删除以“.dat”结尾的文件。据我所知,您不需要删除子目录。 (Here是一个告诉您如何操作的链接。另请参阅here

for (File f : filePath.list()) { // For each file in the directory, delete it.
    if(f.isFile() && file.getName().toLowerCase().endsWith(".dat");){
        f.delete();
    }
}
try {
    file.createNewFile();
} catch (IOException ex) {
    //Please do something here, at leat ex.printStackTrace()
}

请注意,我们可以使用FileFilter来选择要删除的文件。

修改

正如其他答案中所建议的那样,最好移动或重命名现有文件,而不是直接删除它们。