我不确定为什么这段代码不允许我选择文件然后扫描它。任何帮助表示赞赏。谢谢。
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 :(得分: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引用您选择的文件。