2010-11-13 89 views
1

我不確定爲什麼這段代碼不會讓我選擇一個文件然後掃描它。任何幫助表示讚賞。謝謝。爲什麼不能導入文件?

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

你有什麼麻煩?你是否遇到錯誤,而不是你期望的結果,或者其他什麼? – 2010-11-13 06:12:28

+0

我正在收到「文件未找到」異常。 – 2010-11-13 13:52:14

回答

2

我試過了你的代碼,它會到達對話框打開的位置,你可以選擇一個文件。

我覺得你的問題就在這裏:

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

File f = new File(fileName); 

下面的代碼:只

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

返回文件的名稱,而不是完整的文件路徑。這反過來又導致

File f = new File(fileName); 

不開你想讓它,而是簡單的「創造」(它,直到你把它寫出來並不實際創建文件),該文件的文件。

你需要做的是替換那些三行:

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

這將使˚F引用您選擇的文件。

+0

謝謝你爲我解決這個問題! – 2010-11-13 13:51:38

相關問題