2010-11-13 54 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

相关问题