2010-11-13 2 views
1

Je ne sais pas pourquoi ce code ne me permettra pas de choisir un fichier, puis de le scanner. Toute aide est appréciée. Merci.Pourquoi l'importation d'un fichier ne fonctionnera-t-elle pas?

private String[][] importMaze(){ 
    String fileName; 
    JFileChooser fc = new JFileChooser(); 
    int returnVal = fc.showOpenDialog(null); 
    if(returnVal == JFileChooser.APPROVE_OPTION) { 
      fileName = fc.getSelectedFile().getName(); 

    File f = new File(fileName); 
    try { 
     Scanner scan = new Scanner(f); 
     int rows = scan.nextInt(); 
     int columns = scan.nextInt(); 
     String [][] maze = new String[rows][columns]; 
     int r = 0; 
     while(scan.hasNext() && r<=rows){ 
      for(int c = 0; c<=columns;c++){ 
       maze[r][c]=scan.next(); 
      } 
      r++; 
     } 
     return maze; 
    } catch (FileNotFoundException e) { 
     // TODO Auto-generated catch block 
     e.printStackTrace(); 
    } 

} 
    return null; 
} 
+0

Qu'est-ce qui vous dérange? Avez-vous une erreur, pas les résultats que vous attendez, ou autre chose? –

+0

Je recevais une exception "fichier introuvable". –

Répondre

2

J'ai essayé votre code et il est arrivé au point où la boîte de dialogue s'ouvre et vous pouvez sélectionner un fichier.

Je pense que votre problème est ici:

if(returnVal == JFileChooser.APPROVE_OPTION) { 
     fileName = fc.getSelectedFile().getName(); 

File f = new File(fileName); 

Le code suivant:

fileName = fc.getSelectedFile().getName(); 

renvoie uniquement le nom du fichier, pas le chemin complet du fichier. Cela provoque tour

File f = new File(fileName); 

de ne pas ouvrir le fichier que vous le souhaitez, mais simplement « créer » (il ne crée pas le fichier jusqu'à ce que vous l'écrire) le fichier.

Ce que vous devez faire est de remplacer les trois lignes avec:

if(returnVal == JFileChooser.APPROVE_OPTION) { 
    File f = fc.getSelectedFile(); 

qui ferait référence f le fichier que vous avez choisi.

+0

Merci d'avoir résolu ce problème pour moi! –

Questions connexes