为什么这个文件的导入不起作用?

时间:2010-11-13 06:06:08

标签: java jfilechooser java.util.scanner

我不确定为什么这段代码不允许我选择文件然后扫描它。任何帮助表示赞赏。谢谢。

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;
}

1 个答案:

答案 0 :(得分: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引用您选择的文件。