使用JFileChooser选择文件扩展名



我正在尝试做一些非常基本的事情:

保存文件时,JFileChooser应该有关于我希望保存文件的格式的选项,如果没有选择,则默认情况下应保存为.txt。

这是一件容易的事。以下是到目前为止我得到的:一个完全工作的读写类,它接受文件路径和文件名,并创建该文件。JFileChooserFile Filter也准备好了,但我不知道如何实际使用信息,用户确实选择了哪个过滤器。。。

以下是选择器在atm中的外观。

   chooser = new MyFileChooser(path);   
    FileFilter txtType = new FileNameExtensionFilter("Text File (.txt)", "txt");
    FileFilter htmlType = new FileNameExtensionFilter("HTML File (.HTML)", "HTML");
    chooser.addChoosableFileFilter(txtType);
    chooser.addChoosableFileFilter(htmlType);
    chooser.setFileFilter(txtType);
    chooser.setSelectedFile(new File("Text.txt"));
    int back = chooser.showSaveDialog(null);
    if(back == JFileChooser.APPROVE_OPTION) { 
      path = chooser.getSelectedFile().getPath();
      FileExplorer toWrite= new FileExplorer(path);
      toWrite.writeFile();
    }

如前所述,有两个问题:

-如何使用所选过滤器中的信息指定文件的扩展名。

-如果在文件名字段中没有声明扩展名,也没有选择过滤器,我如何将.txt设置为默认值?

基本上,我所要求的只是完成基本的或预期的行为。

如果有人能帮忙就太好了。thx Haeri

我对Stackoverflow真的很失望。。。哦。。这是经过修改的FileChooser。希望我能帮助别人。附言:我注意到,将写函数封装在Filechooser中不是一个好主意。所以最好的方法是使用.getFullName()获取名称+扩展名;方法,并将名称发送给写入函数。

import java.io.File;
import javax.swing.Action;
import javax.swing.JFileChooser;
import javax.swing.filechooser.FileFilter;
import javax.swing.filechooser.FileNameExtensionFilter;
public class MyFileChooser extends JFileChooser {
public MyFileChooser(String path, String defName) {
    super(path);
    FileFilter txtType = new FileNameExtensionFilter("Text File (.txt)", "txt");
    FileFilter htmlType = new FileNameExtensionFilter("HTML File (.HTML)", "HTML");
    this.addChoosableFileFilter(txtType);
    this.addChoosableFileFilter(htmlType);
    this.setSelectedFile(new File(defName));
    Action details = this.getActionMap().get("viewTypeDetails");
    details.actionPerformed(null);
}
public String getFullName() {
    String[] temp;
    String extens, temp2, temp3;
    temp3 = this.getSelectedFile().getName();
    try {
        temp = this.getFileFilter().getDescription().split("[\(||\)]");
        if (temp3.endsWith(temp[1])) {
            return temp3;
        }else{
            return temp3 + temp[1];
        }
    }catch (Exception e){
        try {
            temp2 = this.getSelectedFile().getName();
            extens = temp2.substring(temp2.lastIndexOf('.')).trim();
            return temp3;
        }catch (Exception ee) {
            return temp3 + ".txt";
        }               
    }
}

public String getFolderPath() {
    String inputName = this.getSelectedFile().getName();
    String fullPath = this.getSelectedFile().getPath();
    String result = fullPath.replaceAll(""+ inputName + "$", "");
    return result;
}
}

相关内容

  • 没有找到相关文章

最新更新