繁体   English   中英

Java JFileChooser getAbsoluteFile添加文件扩展名

[英]Java JFileChooser getAbsoluteFile Add File Extension

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

我现在正在做的是:

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

即时添加硬编码的扩展名。 然后保存到它。

只是想知道是否有更强大/逻辑的方式可以实现吗?

感谢您的时间。

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

编辑:我认为我已经冲浪足够知道.html硬编码是安全的,因为我没有发现任何文件说不采取这种方法(不完全确定)。

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

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

编辑:我已经研究过这个但仍然不清楚如何检索用户选择的文件类型。

编辑:这是我的问题的一个改述:

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

编辑:找到了一些东西:它与JFileChooser.getFileFilter()有关,你的帮助仍然欢迎。

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

以下是解决此问题的代码段:

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");
    }
}

你可能正在寻找这个:

技巧包括将返回的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];

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

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

请尝试澄清一下你的问题。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM