文件选择器正在选择错误的目录以进行导出

时间:2014-07-22 12:45:14

标签: java excel swing jtable filechooser

我有一个相当简单的程序,一旦将一些数据输入JTable,就可以将其导出或“保存”到Excel电子表格中。所有这一切都很好,它正在完美地保存excel文件。

我遇到的问题是:

当您尝试将excel文件放在桌面文件夹(桌面/文件夹)的子文件夹中时,它会将其保存在桌面上; 只能在Mac上执行此操作

当我在Windows计算机上执行此操作时,它可以100%的时间工作。

我想知道是否有人对此问题有任何见解或解决此问题?

这是我的JFileChooser代码,理论上会引起问题。

JFileChooser fc = new JFileChooser();
fc.setSelectedFile(new File(jTextField3.getText() + jTextField6.getText() + "-" + jTextField7.getText() + "-" + jTextField8.getText()));
int option = fc.showSaveDialog(PScalcUI.this);
if(option == JFileChooser.APPROVE_OPTION){

    String filename = fc.getSelectedFile().getName(); 
    String path = fc.getSelectedFile().getParentFile().getPath();

    int len = filename.length();
    String ext = "";
    String file = "";

    if(len > 4){
        ext = filename.substring(len-4, len);
    }

    if(ext.equals(".xls")){
        file = path + "\\" + filename; 
    }else{
        file = path + "\\" + filename + ".xcl"; 
    }
    toExcel(jTable1, new File(file));
}

1 个答案:

答案 0 :(得分:1)

您正在构建'文件'以平台相关的方式使用反斜杠,仅适用于Windows。

您需要使用同时采用父路径和文件名的java.io.File构造函数来构造正确的文件对象:

    File file;

    if(len > 4){
        ext = filename.substring(len-4, len);
    }

    if(ext.equals(".xls")){
        file = new File(path, filename); 
    }else{
        file = new File(path, filename + ".xcl"); 
    }
    toExcel(jTable1, file);