java 强制删除文件夹中的所有文件

ql3eal8s  于 2023-03-28  发布在  Java
关注(0)|答案(7)|浏览(157)

我一直在使用一段特定的代码来删除文件夹中的文件,但它被证明是非常有问题的,因为也许我忘记关闭一个或两个输入流。我的代码是如此之大,我无法看到所有的输入流,我还没有关闭。是否有一种方法删除文件是否有一个开放的输入流或没有?
这是我一直在使用的一段代码;

File fin = new File("C:/ABC Statements final/");
    File[] finlist = fin.listFiles();       
    for (int n = 0; n < finlist.length; n++) {
        if (finlist[n].isFile()) {
        System.gc();
        Thread.sleep(2000);
            finlist[n].delete();
        }
    }

我已经编辑了代码。这个版本可以用。

ecbunoof

ecbunoof1#

提供的代码块中没有InputStream示例。
为了避免编写大量未经测试的IO代码,请查看apache.commons.io项目。特别是FileDeleteStrategy类,用于文件删除操作。
你的代码可能看起来像这样:

File fin = new File("C:/ABC Statements final/");

for (File file : fin.listFiles()) {
    FileDeleteStrategy.FORCE.delete(file);
}
pkwftd7m

pkwftd7m2#

您可以用途:

FileUtils.deleteDirectory(File directory)

Apache Commons开始

d4so4syb

d4so4syb3#

使用Apache Commons IO:

File dir = ...
FileUtils.deleteQuietly(dir);
dir.mkdirs();

不需要以这种方式检查异常。

mccptt67

mccptt674#

用途:

import org.apache.commons.io.FileUtils;
   FileUtils.cleanDirectory(fin);

文件:

/**
     * Clean a directory without deleting it.
     *
     * @param directory directory to clean
     * @throws IOException in case cleaning is unsuccessful
     */

为了使用它,你需要一个依赖项:

Maven:

<dependency>
    <groupId>commons-io</groupId>
    <artifactId>commons-io</artifactId>
    <version>2.6</version>
</dependency>

年级:

compile 'commons-io:commons-io:2.6'
jv4diomz

jv4diomz5#

public void removeDir()
{
try
{
    File dir = new File((System.getProperty("user.dir")+"/ReportFolderToMail"+timeStamp));
    if (dir.isDirectory())
    {
        File[] files = dir.listFiles();
        if (files != null && files.length > 0)
        {
            for (File aFile : files) 
            {
                System.gc();
                Thread.sleep(2000);
                 FileDeleteStrategy.FORCE.delete(aFile);
                System.out.println("delet file" +aFile);
            }
        }
        dir.delete();
        System.out.println("delet" +dir);
    } 
    else 
    {
        dir.delete();
    }
}
catch(Exception e)
{
    e.printStackTrace();
}
1cklez4t

1cklez4t6#

public boolean removeDir()
{
try
{
   //destFile = new File((System.getProperty("user.dir")+"/FileName"))
   // checks if the directory has any file
    File dir = destFile; 
    if (dir.isDirectory())
    {
        File[] files = dir.listFiles();
        if (files != null && files.length > 0)
        {
            for (File aFile : files) 
            {
                System.gc();
                Thread.sleep(2000);
                FileDeleteStrategy.FORCE.delete(aFile);
                System.out.println("delet file" +aFile);
            }
        }
        dir.delete();
        System.out.println("delet" +dir);
    } 
    else 
    {
        dir.delete();
    }
}
catch(Exception e)
{
    logger.log(LogStatus.FATAL, "Exception Occured While Deleting Folder : " +e);
}
return true;
}
oaxa6hgo

oaxa6hgo7#

我只是这样做了,它工作得很好:

System.gc();
            //then
            Files.delete(chosenFile.toPath());
            FileDeleteStrategy.FORCE.delete(chosenFile);

相关问题