Java JFileChooser getAbsoluteFile 添加文件扩展名

Posted

技术标签:

【中文标题】Java JFileChooser getAbsoluteFile 添加文件扩展名【英文标题】:Java JFileChooser getAbsoluteFile Add File Extension 【发布时间】:2010-04-28 14:15:40 【问题描述】:

我有这个问题,但我想知道是否有更好的方法来添加文件扩展名?

我现在正在做的是:

String filePath = chooser.getSelectedFile().getAbsoluteFile() + ".html";

我正在添加硬编码的扩展。然后保存到它。

只是想知道是否有更健壮/合乎逻辑的方式可以实现?

感谢您的宝贵时间。

编辑:我问这个是因为我希望我的应用程序可以跨平台移植。所以手动添加 .html 我可能会使其成为仅限 Windows 的解决方案。

编辑:我认为我已经浏览到足以知道 .html 硬编码是安全的,因为我还没有找到任何说明不采用这种方法的文档(不完全确定)。

问题:如果我想以另一种格式保存文件,例如文本,我如何检测用户选择了哪种格式?

FileNameExtensionFilter 可以向对话框添加过滤器,但我如何获得所选文件类型的返回值?

编辑:我研究了this,但仍不清楚如何检索用户选择的文件类型。

编辑:这是我的问题的改写:

alt text http://img98.imageshack.us/img98/4904/savef.jpg 我的问题是如何检索/找出用户选择的两个过滤器中的哪一个作为保存格式。 HTML 还是 JPEG?我如何从 JFileChooser 中检索此信息?谢谢。

编辑:发现了一些东西:它与 JFileChooser.getFileFilter() 有关 仍然欢迎您的帮助。

编辑:getFileFilter() 和 FileNameExtensionFilter 比较解决了这个问题。

【问题讨论】:

【参考方案1】:

这里是解决问题的代码sn-p:

JFileChooser chooser = new JFileChooser();
chooser.setMultiSelectionEnabled(false);
chooser.setAcceptAllFileFilterUsed(false);

FileNameExtensionFilter filter = new FileNameExtensionFilter("HTML Documents", "htm", "html");
chooser.setFileFilter(filter);

int option = chooser.showSaveDialog(ChatGUI.this);
if (option == JFileChooser.APPROVE_OPTION) 
    // Set up document to be parsed as HTML
    StyledDocument doc = (StyledDocument)textPaneHistory.getDocument();
    HTMLEditorKit kit = new HTMLEditorKit();

    BufferedOutputStream out;

    try 
        System.out.println(chooser.getFileFilter());

        if (chooser.getFileFilter() == filter)
            System.out.println("ha ha");
    

【讨论】:

【参考方案2】:

您可能正在寻找这个:

诀窍在于将返回的 FileFilter 转换为 FileNameExtensionFilter,然后应用 getExtensions()。

JFileChooser fileChooser = new JFileChooser("");

// Prevent user to use the default All Files option
fileChooser.setAcceptAllFileFilterUsed(false);

[...]

// Get the FileFilter
FileFilter ff = fileChooser.getFileFilter();

// Cast the FileFilter to FileNameExtensionFilter
FileNameExtensionFilter extFilter = (FileNameExtensionFilter)ff;

// Get the Extension
String ext = extFilter.getExtensions()[0];

或者,为了使其紧凑:

ext = ((FileNameExtensionFilter)fileChooser.getFileFilter()).getExtensions()[0];

【讨论】:

【参考方案3】:

我不明白你想做什么。您是否尝试以其他格式保存所选文件?所选文件的路径将包含文件扩展名,因此您无需手动添加。例如,如果选择了文件anything.html,则以下内容将在屏幕上打印“/Users/banang/Documents/anything.html”。

JFileChooser chooser = new JFileChooser();
chooser.showSaveDialog(null);
System.err.println(chooser.getSelectedFile().getCanonicalPath());

请稍微澄清一下您的问题。

【讨论】:

以上是关于Java JFileChooser getAbsoluteFile 添加文件扩展名的主要内容,如果未能解决你的问题,请参考以下文章

java JFilechooser覆盖检查

JFileChooser和FileFilter的使用,以及Java RandomAccessFile用法

Java JFileChooser getAbsoluteFile 添加文件扩展名

java程序文件选择对话框打不开,jfilechooser

JNLP 不合作 JFileChooser 访问被拒绝

java JFileChooser 选择文件时,文件很多的时候如何能进行日期排序,便于查找想要选择的文件