2014-04-26 10 views
0

Si je mets chemin à mon lecteur de CD il liste tous les fichiers et dossiers comme il se doit, mais si je mets un chemin à une partition de pilote dur, je reçois NullPointerException. Quelqu'un peut il m'aider avec ça. Je ne peux pas aller au fond de tout ça. Quelle est la différence entre les structures de dossiers CD et la structure de partition O.o System.out.print fonctionne correctement pour les partitions CD et HDD. Voici un code:JTree null pointeur exception

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

Pas vraiment une réponse, mais: Je suppose qu'il y a des "répertoires" Windows auxquels vous ne pouvez pas accéder facilement. Par conséquent, la méthode listFiles renvoie null. Passer ces répertoires. – user3575404

+0

Vous avez raison. Je reçois ceci lors de l'exécution du programme: S-1-5-18. I SECURITY_LOCAL_SYSTEM_RID \t S-1-5-18 – Anak1n

Répondre

0

Le problème est dans l'autorisation du dossier Windows. Cela résout certains des problèmes:

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

Mais il y a beaucoup plus de fichiers verrouillés inaccessibles.