Java 使用JFileChooser选择文件扩展名
我正在尝试做一些非常基本的事情: 保存文件时,JFileChooser应该有关于我希望保存文件的格式的选项,如果未选择任何格式,则应将其另存为.txt作为默认格式 一件容易想到的事。 以下是我到目前为止得到的信息: 一个完全工作的读写类,它接受filepath和filename并创建该文件。 带有文件过滤器的JFileChooser也准备好了,但我不知道如何实际使用这些信息,用户选择了哪个过滤器 下面是选择器的外观Java 使用JFileChooser选择文件扩展名,java,file,filter,jfilechooser,Java,File,Filter,Jfilechooser,我正在尝试做一些非常基本的事情: 保存文件时,JFileChooser应该有关于我希望保存文件的格式的选项,如果未选择任何格式,则应将其另存为.txt作为默认格式 一件容易想到的事。 以下是我到目前为止得到的信息: 一个完全工作的读写类,它接受filepath和filename并创建该文件。 带有文件过滤器的JFileChooser也准备好了,但我不知道如何实际使用这些信息,用户选择了哪个过滤器 下面是选择器的外观 chooser = new MyFileChooser(path);
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真的很失望。。。哦,好吧。。这是修改后的文件选择器。希望我能帮助别人。 PS:我注意到,将写函数打包到Filechooser中不是一个好主意。所以最好的方法是使用.getFullName获取name+扩展名;方法,并将名称发送到写入函数
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;
}
}