2014-04-26 4 views
0

내 CD 드라이브에 경로를 넣으면 모든 파일과 폴더를 나열해야하지만 하드 드라이버 파티션에 경로를 추가하면 NullPointerException이 발생합니다. 어떤 사람이 이것으로 나를 도울 수 있습니까? 나는 이것의 바닥에 도달 할 수 없다. CD 폴더 구조와 파티션 구조 사이에 다른 점 O.o System.out.print는 CD 및 HDD 파티션 모두에 대해 잘 작동합니다.JTree null 포인터 예외

import java.awt.Dimension; 
import java.io.File; 
import javax.swing.JButton; 
import javax.swing.JFileChooser; 
import javax.swing.JPanel; 
import javax.swing.JScrollPane; 
import javax.swing.JTree; 
import javax.swing.tree.DefaultMutableTreeNode; 
import javax.swing.tree.TreeModel; 

/** 
* 
* @author Anak1n 
*/ 
public class gui extends JPanel { 

    private final JTree tree; 

    TreeModel model; 
    JFileChooser chooser = new JFileChooser(); 
    JButton load; 
    File fileRoot = new File("F:/"); 
    DefaultMutableTreeNode root; 

    public gui() { 

     root = new DefaultMutableTreeNode(); 

     getList(root, fileRoot); 

     tree = new JTree(root); 
     tree.setPreferredSize(new Dimension(300, 400)); 
     tree.setRootVisible(false); 
     add(new JScrollPane((JTree) tree), "Center"); 

    } 

    public void getList(DefaultMutableTreeNode node, File f) { 

     if (f.isDirectory()) { 
      System.out.println(f.getName()); 
      DefaultMutableTreeNode child = new DefaultMutableTreeNode(f); 
      node.add(child); 
      File fList[] = f.listFiles(); 
      for (File fList1 : fList) { 
       getList(child, fList1); 
      } 
     } 

     if (f.isFile()) { 
      DefaultMutableTreeNode child = new DefaultMutableTreeNode(f); 
      node.add(child); 
     } 

    } 

} 
+1

대답은 아니지만 쉽게 접근 할 수없는 Windows "디렉토리"가 있다고 생각합니다. 따라서 listFiles 메소드는 null을 리턴합니다. 해당 디렉토리를 건너 뜁니다. – user3575404

+0

당신 말이 맞아요. 나는 프로그램을 실행할 때 이것을 얻는다 : S-1-5-18. 내가 SECURITY_LOCAL_SYSTEM_RID \t S-1-5-18 – Anak1n

답변

0

예 문제는 Windows 폴더 권한에 : 여기에 코드입니다. 이렇게하면 몇 가지 문제가 해결됩니다.

if (f.isDirectory() && !f.getName().equals("$RECYCLE.BIN") && !f.getName().equals("System Volume Information") && 
       !f.getName().equals("$Recycle.Bin") && !f.getName().equals("Config.Msi")) 

그러나 액세스 할 수없는 더 많은 잠긴 파일이 있습니다.