Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/file/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/dart/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 以前的文件删除过程_Java_File - Fatal编程技术网

Java 以前的文件删除过程

Java 以前的文件删除过程,java,file,Java,File,我遇到了一个奇怪的情况,那就是我正在文件夹中创建一个文件,但我需要确保在创建文件之前,如果文件夹中有任何文件,则必须删除该文件,只有当前正在处理的文件应该存在 因为在我的应用程序中,每天都会运行一个作业,该作业会在该文件夹中创建文件,所以当当前作业运行时,它应该删除前一天的文件,并且文件夹中不应存在任何文件,但下面显示的代码会在该文件夹中创建文件,但问题是前一天的文件,或者如果作业在同一天多次运行此外,这些文件也在文件夹中,应该删除。请建议如何实现这一点 File file = new File

我遇到了一个奇怪的情况,那就是我正在文件夹中创建一个文件,但我需要确保在创建文件之前,如果文件夹中有任何文件,则必须删除该文件,只有当前正在处理的文件应该存在

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

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

请不要看到更多的代码,建议您在打开新文件之前清空文件夹,因为现在您只删除具有您要编写的确切名称的文件。使用文件对象的
列表
方法

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

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

如果程序的不同实例可能同时运行,则需要实现某种形式的同步。一种相当简单的方法是检查abc.OLD目录是否存在,如果存在则中止执行;
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.
    }
文件夹=新文件(文件路径); File[]listOfFiles=folder.listFiles(); for(int i=0;i首先,我认为实例化
文件
对象的方式可能会有问题,因为如果没有路径分隔符(
\
),您将尝试创建
c:\abcfgty.dat
而不是
c:\abc\fgty.dat

改用:

File file = new File(filePath, s);
然后可以删除以“.dat”结尾的文件。据我所知,您不需要删除子目录。(是一个告诉您如何操作的链接。另请参见)

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

编辑


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

什么是
文件路径
字符串
文件
?顺便说一句,变量名在Java中以小写字母开头。@C.champing这是字符串,是的也会改变。请建议如何实现这一点。我建议您首先开始使用谷歌,尝试找到解决编程问题的方法,而不是一直在这里问完整的解决方案。问答网站也是如此,但首先你必须在提问之前亲自尝试一下。网络上有大量的资源可以让您开始学习基本知识(如何创建/删除文件,如何创建zip档案等),使用Google找到的大多数示例都非常详细,足以回答您的大多数问题。这些文件有一个单独的文件夹保留区,还请建议提供可靠的解决方案,我想删除扩展名为.dat的所有文件是否应该
FilePath.list()
be
newFile.list()
?如果我正确地阅读了这个问题,它应该是
File newFile=newFile(FilePath)
因为FilePath是目录(基于OP代码中的注释)。@Marc Andre No,你想
列出父目录的所有子目录,假设我理解OP的问题)是
FilePath
。而
newFile
是要创建的新文件,而不是要在其中创建它的目录。@SoniSahai“编译错误”告诉我,我不能帮你什么忙。我的猜测是
FilePath
不是您认为的那样,但是因为您没有显示代码的这一部分,所以我说不出来。如果您只想删除
.dat
文件,只需在
f.delete()
调用周围添加
If
语句即可
if(f.getName().endsWith(“.dat”){f.delete();}
但是FilePath不是
文件,而是字符串。从OP的评论来看:这是字符串,耶也会改变,请建议如何实现这一点。我误读了你的代码(很抱歉),所以我想你需要在
文件路径
的基础上添加另一个
文件
变量。请你也发布有助于理解的代码,提前感谢即使我想压缩前一天的文件,然后移动请通知你也请简要解释一下上面的代码发生了什么事,提前感谢您在FilePath中提供创建文件的文件夹。然后它获取其中的所有文件和文件夹。它遍历并检查它是否是一个文件。如果它是一个文件,它会删除。最后,它创建了一个新文件。@C香槟酒,其中f已初始化,请在中解释感谢advance@SoniSahai我认为在继续之前你需要学习一下Java
FilePath.list()
返回一个
File
数组,表示文件夹“FilePath”中存在的文件和文件夹。f只是这个数组的一个元素。@SoniSahai请查看@SoniSahai上的增强for循环,并查看以获取有关
文件的基本信息
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()
}