java实现类似linux的tree命令,求解答

package javaiotest;

import java.io.*;
import java.util.Scanner;

public class FileExplore {

private File file = null;
public int fileNum = 0;
public int dirNum = 0;
public FileExplore(){
    System.out.println("请输入要遍历的目录:");
    Scanner console = new Scanner(System.in);
    String filepath = console.next();
    file = new File(filepath);
    console.close();
}

public  String getDepth(File file){
    File temp = file;
    String depth = new String();
    while(temp!=this.file){
        depth+="   ";
        temp = temp.getParentFile();
    }
    return depth;
}


public void treeOfFile(File file){

    if(!file.exists())
        System.out.println("file is null!");
    if(file.isFile()){
        System.out.println(this.getDepth(file)+"|--"+file.getName());
        fileNum++;
        }
    if(file.isDirectory()&&file.list().length==0){
        System.out.println(this.getDepth(file)+"|--" +file.getName());
        dirNum++;
    }
    if(file.isDirectory()&&file.list().length>0)
    {
        dirNum++;
        System.out.println(this.getDepth(file)+"|--"+file.getName());
        File[] filelist = file.listFiles();
        for(int i=0;i<filelist.length;i++){
            treeOfFile(filelist[i]);
        }

    }
}

public static void main(String[] args) {

    FileExplore demo = new FileExplore();
    demo.treeOfFile(demo.file);
    System.out.println("文件夹数量:"+ demo.dirNum);
    System.out.println("文件数量:"+ demo.fileNum);
}

}
结果抛出空指针异常,是在那个getDepth出错的,可是看不出来哪里错了

while(temp!=this.file)
不能这么写应该是
while(temp.getFileName().equals(this.file.getFileName()))

!= 比较的是值,equals比较的是内容