黑马程序员技术交流社区
标题:
File删除
[打印本页]
作者:
潘才新
时间:
2013-8-6 16:39
标题:
File删除
请教各路高手~代码中怎么修改,想要删除不成功返回"删除失败"但我这样写的话
之前文件夹被删除之后第二次删除执行else不到就报错了。怎么样修改可以进行判断~
package day02;
import java.io.File;
public class RemoveDir {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
File file=new File("c:\\asd");
if(removeDir(file)){
System.out.println("删除成功");
}
else{
System.out.println("删除失败");
}
}
public static boolean removeDir(File dir){
System.out.println(dir);
File[] files=dir.listFiles();
for(int x=0;x<files.length;x++){
if(files[x].isDirectory()&&!files[x].isHidden()){
removeDir(files[x]);
}
else{
files[x].delete();
}
}
return dir.delete();
}
}
复制代码
2.jpg
(110.81 KB, 下载次数: 7)
下载附件
2013-8-6 16:33 上传
作者:
lijia113
时间:
2013-8-6 16:59
你在删除前要加个判断,判断这个文件存不存在
用file.exists().当存在这个文件时,你就调用你的RemoveDir方法,不存在是就直接给出提示。这样就解决问题了
作者:
kangxiaoning
时间:
2013-8-6 18:41
貌似是空指针异常,说明你要用到的东西可能不存在,所以你要想想你都操作了什么,这里只有文件夹,所以你操作的文件夹可能不存在吧,要么判断一下,要么把异常抛出去。
作者:
天地有我
时间:
2013-8-6 20:32
本帖最后由 天地有我 于 2013-8-6 20:36 编辑
给你修改了一下,希望能满足你的要求。
import java.io.File;
public class RemoveDir
{
/**
* @param args
*/
public static void main(String[] args)
{
// TODO Auto-generated method stub
File file = new File("c:\\asd");
if (removeDir(file))
{
System.out.println("删除成功");
}
else
{
System.out.println("删除失败");
}
}
public static boolean removeDir(File dir)
{
System.out.println(dir);
if (!dir.exists())
{
return false;
}
else
{
if (dir.isFile())
{
return dir.delete();
}
else
{
File[] files = dir.listFiles();
if (files.length == 0)
{
return dir.delete();
}
else
{
for (int x = 0; x < files.length; x++)
{
if (files[x].isDirectory() && !files[x].isHidden())
{
removeDir(files[x]);
}
else
{
files[x].delete();
}
}
return dir.delete();
}
}
}
}
}
作者:
潘才新
时间:
2013-8-6 20:49
感谢朋友们的解答!!!{:soso_e116:}
作者:
施大勇
时间:
2013-8-6 20:49
21行前应该有一个判断语句,如果给定的文件不为空,才可以列出该文件中的内容。
若为空则直接返回false;
if(dir!=null){这里是你的主体语句;return dir.delete(); }else{return false;}
作者:
赵国刚
时间:
2013-8-10 07:54
删除前要加个判断(这应该是严谨性的不足,开始的时候都这样,总结的多了就好了),判断这个文件存不存在
用file.exists().当存在这个文件时,你就调用你的RemoveDir方法,不存在是就直接给出提示或则直接返回false;。
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2