gpt4 book ai didi

java - 使用 JFileChooser 选择文件扩展名

转载 作者:太空宇宙 更新时间:2023-11-04 14:56:21 24 4
gpt4 key购买 nike

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

保存文件时,JFileChooser 应该有关于我要保存文件的格式的选项,如果未选择任何格式,则应默认保存为 .txt。

人们会认为这是一件很容易的事情。这是我到目前为止所得到的:一个完全工作的读写类,它获取文件路径和文件名,并创建该文件。带有文件过滤器JFileChooser也已准备就绪,但我只是不知道如何实际使用这些信息,即用户选择了哪个过滤器......

这是选择器的外观。

   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 设置为默认值?

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

如果有人能提供帮助,那就太好了。谢谢海里

最佳答案

我对 Stackoverflow 真的很失望...哦好吧..这是修改后的 FileChooser。希望我能帮助别人。PS:我注意到,将写入功能打包在文件选择器中并不是一个好主意。所以最好的办法是使用 .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;
}

}

关于java - 使用 JFileChooser 选择文件扩展名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23164798/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com