Can';不删除java中的文件?
我正在尝试删除文件夹中的所有文件:-Can';不删除java中的文件?,java,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){ i
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");
}
}
}
我收到响应“文件未删除”,并且文件未被删除。我的代码怎么了
你的代码没有错,只是你应该给出完整的路径 尝试以下操作:
File folder=新文件(“C:\\inputs”)代码>
而不是这一行:File folder=新文件(“输入”)代码>除了应该给出完整路径外,代码没有任何错误
尝试以下操作:File folder=新文件(“C:\\inputs”)代码>
而不是这一行:File folder=新文件(“输入”)代码>您尚未提供文件夹的完整路径。
还要注意使用正斜杠
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。您尚未给出文件夹的完整路径。
还要注意使用正斜杠
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。无法删除文件的原因有很多;它可能不存在,它可能是一个非空目录,您可能没有关闭使用它的所有资源,您的程序可能没有这样做的权限,仅举几例
不幸的是,该方法提供的关于原因的信息很少;这基本上取决于你去探索和解决它。但是有好消息;您首先不想使用文件
Java7引入了新的包,这是一个更加健壮的文件访问API。它提供了抽象的概念,并将具体操作分离到类中,特别是它提供了文档化的类,以引发明确的异常,描述删除可能失败的原因
使用路径
和文件
;你会很高兴你这么做的。文件无法删除的原因有很多;它可能不存在,它可能是一个非空目录,您可能没有关闭使用它的所有资源,您的程序可能没有这样做的权限,仅举几例
不幸的是,该方法提供的关于原因的信息很少;这基本上取决于你去探索和解决它。但是有好消息;您首先不想使用文件
Java7引入了新的包,这是一个更加健壮的文件访问API。它提供了抽象的概念,并将具体操作分离到类中,特别是它提供了文档化的类,以引发明确的异常,描述删除可能失败的原因
使用路径
和文件
;你会很高兴你这么做的。我想出来了,我用一个文件阅读器来读取我没有关闭的文件的内容。很抱歉没有提供完整的代码我弄明白了,当时我正在使用文件阅读器读取我没有关闭的文件内容。很抱歉没有提供完整的代码如果目录不是空的,Java library delete函数不会删除该目录。
尝试递归删除所有子目录和文件
或者使用一些外部库,比如ApacheCommonsIO
File file = new File("/your/path/here");
FileUtils.deleteDirectory(file);
公地io
公地io
2.6
如果目录不是空的,Java library delete函数不会删除该目录。
尝试递归删除所有子目录和文件
或者使用一些外部库,比如ApacheCommonsIO
File file = new File("/your/path/here");
FileUtils.deleteDirectory(file);
公地io
公地io
2.6
在删除文件之前尝试调用垃圾收集器。在删除文件之前尝试调用垃圾收集器。可能是重复的。我发现,我正在使用文件读取器读取未关闭的文件内容。很抱歉没有提供完整的代码。可能是重复的。我发现,我正在使用文件读取器读取未关闭的文件内容。很抱歉没有提供完整的代码。文件
构造函数中的相对路径有什么问题?您的Java类是从它的目录启动的。jvm在它自己的目录中运行。处理.delete的jvm如何知道“输入”的位置。猜测这将是一个坏主意,因为其他一些“输入”可能存在并被删除。所以java需要一个绝对路径和文件名“所以java需要一个绝对路径和文件名”——这根本不是真的。尝试打印新文件(“.”)。getAbsolutePath()
;它将打印您当前的工作目录。@dimo414“是”是正确的。它不是绝对文件名,而是抽象文件名。请参见此处的java源代码:因此,所使用的相对路径OP显然没有任何问题。在文件中的相对路径有什么问题?
构造函数?您的java类是从它的目录启动的。jvm在它自己的目录中运行。处理.delete的jvm如何知道“输入”的位置。猜测这将是一个坏主意,因为其他一些“输入”可能存在并被删除。所以java需要一个绝对路径和文件名“所以java需要一个绝对路径和文件名”——这根本不是真的。尝试打印新文件(“.”)。getAbsolutePath()
;它将打印您当前的工作目录。@dimo414“是”是正确的。它不是绝对文件名,而是抽象文件名。请参见此处的java源代码:因此,所使用的相对路径OP显然没有问题。给您的印象是输入
位于C:
的根目录中?它可以在文件系统的任何地方;调用newfile(“inputs”)
将创建程序运行所在的当前目录的File
对象。@dimo414我写了“C:\\inputs”作为示例。文件夹可能在任何地方。正确的方法是