本帖最后由 庄星睿 于 2012-7-6 23:25 编辑
在删除非空目录的时候,如果遇到了隐藏文件或目录,就先判断一下,视频里这样写的:- import java.io.*;
- class RemoveDir
- {
- public static void main(String[] args)
- {
- File dir=new File("F:\\learning diary");
- removeDir(dir);
- }
- public static void removeDir(File dir)
- {
- File[] files=dir.listFiles();
- for(int x=0; x<files.length; x++)
- {
- if(!files[x].isHidden() && files[x].isDirectory()) //这里先判断文件是否隐藏
- removeDir(files[x]);
- else
- System.out.println(files[x].toString()+":-file-:"+files[x].delete());
- }
- System.out.println(dir.toString()+"..dir.."+dir.delete());
- }
- }
复制代码 问题一:
这个程序如果文件里有隐藏文件,执行第一次时,隐藏文件和目录均未删除,但原来文件的隐藏属性都自动消失了,所以多执行几次之后,文件就都删除了,为什么?
我改了一下代码:- public static void removeDir2(File dir)
- {
- File[] files=dir.listFiles();
- for(int x=0; x<files.length; x++)
- {
- if (files[x].isHidden()) //先判断是否隐藏
- continue;
- if(files[x].isDirectory())
- removeDir(files[x]);
- else
- System.out.println(files[x].toString()+":-file-:"+files[x].delete());
- }
- if(dir.length()==0) 先判断目录是否为空,如果为空则删除
- {
- System.out.println("dir.length:---->"+dir.length());
- System.out.println(dir.toString()+"..dir.."+dir.delete());
- }
- }
复制代码 问题二:
我改了代码之后,如果目录不是隐藏的,但目录里边的文件是都是隐藏的, 那么dir.length()还是0,还会执行删除目录的操作,就会出现 dir:false
那么对于非隐藏目录中的隐藏文件,我怎样判断这个非隐藏的目录是非空的? |