无法删除java中的文件?

时间:2015-03-03 07:47:54

标签: java

我正在尝试删除文件夹中的所有文件: -

    import java.io.*;
public class AddService {   
    public static void main(String args[]){
        File folder=new File("inputs");
        File[] listOfFiles=folder.listFiles();
        for(File file:listOfFiles){
            if(file.delete())
                System.out.println("File deleted");
            else
                System.out.println("File not deleted");
        }
    }
}

我收到回复“文件未删除”,文件未被删除。我的代码出了什么问题?

7 个答案:

答案 0 :(得分:6)

无法删除文件的原因有很多;它可能不存在,它可能是一个非空目录,你可能没有关闭所有使用它的资源,你的程序可能没有这样做的权限,仅举几例。

不幸的是,File.delete()方法提供的信息很少,为什么;它非常适合你四处寻找并弄明白。但是有好消息;你不想在第一时间使用File

Java 7引入了新的java.nio.file包,它是一个更强大的文件访问API。它提供了抽象Path的概念,并将具体操作分离到Files类中,特别是它提供了Files.delete(),其被记录以引出明确的异常,描述删除可能失败的原因。

使用PathFiles;你很高兴你做到了。

答案 1 :(得分:0)

  1. 尝试在此语句中提供完整路径:“文件夹=新文件(”输入“);”
  2. 使用try-catch块并打印例外(如果有)

答案 2 :(得分:0)

我想通了,我正在使用FileReader来读取我没有关闭的文件的内容。很抱歉没有提供整个代码

答案 3 :(得分:0)

Java 库删除函数不会删除非空目录。 尝试递归删除所有子目录和文件。

或者使用一些外部库,比如 apache commons io

File file = new File("/your/path/here");
FileUtils.deleteDirectory(file);
import org.apache.commons.io.FileUtils;
<dependency>
    <groupId>commons-io</groupId>
    <artifactId>commons-io</artifactId>
    <version>2.6</version><!-- check latest version-->
</dependency>

答案 4 :(得分:0)

在删除文件之前尝试调用垃圾收集器。

答案 5 :(得分:-1)

您的代码没有任何问题,除非您应该提供完整的路径。

试试这个:File folder=new File("C:\\inputs");

代替此行:File folder=new File("inputs");

答案 6 :(得分:-1)

您尚未指定该文件夹的完整路径。 另请注意使用正斜杠

try{
        File folder=new File("C:/xxxx/xxxx/xxxx/inputs");
        File[] listOfFiles=folder.listFiles();
        for(File file:listOfFiles){
            if(file.delete())
                System.out.println("File deleted");
            else
                System.out.println("File not deleted");
        }
}
catch(Exception e)
{
    System.out.println(e.printStackTrace());
}

始终对包含抛出异常的方法的代码使用 try-catch