我正在尝试删除文件夹中的所有文件: -
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");
}
}
}
我收到回复“文件未删除”,文件未被删除。我的代码出了什么问题?
答案 0 :(得分:6)
无法删除文件的原因有很多;它可能不存在,它可能是一个非空目录,你可能没有关闭所有使用它的资源,你的程序可能没有这样做的权限,仅举几例。
不幸的是,File.delete()
方法提供的信息很少,为什么;它非常适合你四处寻找并弄明白。但是有好消息;你不想在第一时间使用File
。
Java 7引入了新的java.nio.file
包,它是一个更强大的文件访问API。它提供了抽象Path
的概念,并将具体操作分离到Files
类中,特别是它提供了Files.delete()
,其被记录以引出明确的异常,描述删除可能失败的原因。
使用Path
和Files
;你很高兴你做到了。
答案 1 :(得分:0)
答案 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 。