Why does this program fall into endless loop?
Hello EveryBody:
Here is a small demo:
import java.io.*;
import java.util.*;
class DeleteDir{
public DeleteDir(File dir){
if(dir.isDirectory()){
LinkedList dirs = new LinkedList();
dirs.add(dir);
while(dirs.size() > 0){
File currentDir = (File)dirs.getFirst();
File[] files = currentDir.listFiles();
boolean emptyDir = true;
for(int i= 0; i<files.length; i++){
if(files[i].isFile()){
System.out.println("Deleting..." + files[i].getAbsolutePath());
try{
files[i].delete();
}catch(SecurityException se){
se.printStackTrace();
}
}else{
dirs.addFirst(files[i]);
emptyDir = false;
}
}
if(emptyDir){
System.out.println("Deleting... " + currentDir.getAbsolutePath());
try{
currentDir.delete();
}catch(SecurityException se){
se.printStackTrace();
}
dirs.removeFirst();
}
}
}else if(dir.isFile()){
System.out.println("Error: " + dir.getName() + " is a file");
}else System.out.println("Error: " + dir.getName() + " is unknown");
}
public static void main(String[] args){
File dir = new File(args[0]);
DeleteDir delDir = new DeleteDir(dir);
}
}
When I excute "java DeleteDir experiment",it goes to endless loop.
Deleting... F:\java\practise\practise8\experiment\experiment\experiment
Deleting... F:\java\practise\practise8\experiment\experiment\experiment
Deleting... F:\java\practise\practise8\experiment\experiment\experiment
Deleting... F:\java\practise\practise8\experiment\experiment\experiment
.......
Only by Ctrl+c can I stop it!
Experiment here is a directory in which there is only another directory
named experiment which includes an empty directory named experiment
again in it.Mayb you will feel puzzled.Tree this directory,we can get:
????experiment
????experiment
????experiment
That's the whole of my question!
Any help will be greatly appreciated!
Dowson.