如何使用 JFileChooser 保存文件?

     2023-05-07     155

关键词:

【中文标题】如何使用 JFileChooser 保存文件?【英文标题】:How to save file using JFileChooser? 【发布时间】:2011-02-01 15:04:57 【问题描述】:

我的应用程序中有一个名为“另存为”的方法,它将我的应用程序在计算机上的图像保存到文件中。 我使用 JFileChooser 让用户选择他们想要的位置来保存文件。 问题是除非用户明确键入文件格式,否则它会保存没有扩展名的文件。 如何在“文件类型”下拉菜单中设置 jpg、png 等格式。

以及,如何从文件类型下拉菜单中获取扩展名以保存我的图像文件。

 ImageIO.write(image,extension,file);

【问题讨论】:

【参考方案1】:

终于解决了我自己的问题:

JFileChooser fc = new JFileChooser("C:/");
fc.addChoosableFileFilter(new JPGSaveFilter());
fc.addChoosableFileFilter(new JPEGSaveFilter());
fc.addChoosableFileFilter(new PNGSaveFilter());
fc.addChoosableFileFilter(new GIFSaveFilter());
fc.addChoosableFileFilter(new BMPSaveFilter());
fc.addChoosableFileFilter(new WBMPSaveFilter()); 

int retrieval = fc.showSaveDialog(null);

if (retrieval == JFileChooser.APPROVE_OPTION) 
  String ext = "";

  String extension = fc.getFileFilter().getDescription();

  if (extension.equals("*.jpg,*.JPG")) 
    ext = ".jpg";
   else if (extension.equals("*.png,*.PNG")) 
    ext = ".png";
   else if (extension.equals("*.gif,*.GIF")) 
    ext = ".gif";
   else if (extension.equals("*.wbmp,*.WBMP")) 
    ext = ".wbmp";
   else if (extension.equals("*.jpeg,*.JPEG")) 
    ext = ".jpeg";
   else if (extension.equals("*.bmp,*.BMP")) 
    ext = ".bmp";
  

示例过滤器:

package example

import java.io.File;
import javax.swing.filechooser.FileFilter;

class JPGSaveFilter extends FileFilter 
  @Override
  public boolean accept(File f) 
    if (f.isDirectory()) 
      return false;
    

    String s = f.getName().toLowerCase();

    return s.endsWith(".jpg");
  

  @Override
  public String getDescription() 
    return "*.jpg,*.JPG";
  

【讨论】:

【参考方案2】:

准备文件选择器过滤器:

    jFileChooser.addChoosableFileFilter(new FileNameExtensionFilter("File X (.xxx)", "xxx"));
    jFileChooser.addChoosableFileFilter(new FileNameExtensionFilter("File Y (.yyy)", "yyy"));
    jFileChooser.addChoosableFileFilter(new FileNameExtensionFilter("File Z (.zzz)", "zzz"));

    // set default type
    jFileChooser.setFileFilter(jFileChooser.getChoosableFileFilters()[0]);

    // set default file
    jFileChooser().setSelectedFile(defaultFile);

批准验证后

//Add extension to Selected file 
File file = new File(jFileChooser().getSelectedFile().getCanonicalPath() + "." + ((FileNameExtensionFilter) jFileChooser().getFileFilter()).getExtensions()[0]);

验证所选文件是否带有扩展名是个好主意。

【讨论】:

我只能说,LOD 原则在这个答案中被忽略了。 天啊,再次!对不起,不是我,我只是另一个面临这个问题的人。【参考方案3】:

使用 JFileChoose.SetFileFilter 示例:http://www.java2s.com/Code/JavaAPI/javax.swing/JFileChoosersetFileFilterFileFilterfilter.htm

【讨论】:

ok.. setFileFilter 将在文件类型下拉菜单中显示扩展名。但是如何从这个文件类型下拉菜单中检索或使用选定的扩展名.. 一旦你选择了文件,它应该就像 String ext = file.getName().substring(file.getName().lastIndexOf(".")); 这是一个非常疯狂的 URL...它包含三个“java”、“file”和“filter”。【参考方案4】:

我想我得到了更好的解决方案。 将通过示例代码片段进行解释。

这是我设置文件过滤器的方式:jFileChooser.setFileFilter(new FileNameExtensionFilter(".txt", "txt"));.

在此之后的主要保存行:textArea1.write(new BufferedWriter(new FileWriter(jFileChooser.getSelectedFile().getAbsolutePath() + jFileChooser.getFileFilter().getDescription().replace("All Files", ""))));.

当然最重要的是这个片段:jFileChooser.getSelectedFile().getAbsolutePath() + jFileChooser.getFileFilter().getDescription().replace("All Files", "")

我唯一不喜欢的是,我找不到任何像 'getExtension' 这样的方法,这意味着如果没有不必要的字符串麻烦,你就不能有任何好的描述。


好的,知道了。你可以这样做: jFileChooser.getFileFilter().toString().replaceFirst(".*extensions=\\[(.*)]]", ".$1").replaceFirst(".*AcceptAllFileFilter.*", "").

不幸的是,它不是那么漂亮,但似乎很有魅力。

【讨论】:

如何通过 JFileChooser 将 Icon 对象保存到文件中?

】如何通过JFileChooser将Icon对象保存到文件中?【英文标题】:HowtosaveIconobjectintoafileviaJFileChooser?【发布时间】:2011-12-0500:56:35【问题描述】:我有一个JLabel,其中保存了我的ImageIcon,如下所示:ImageIconimageIcon=sample.map();//amapmethodc... 查看详情

使用 JFileChooser 保存

】使用JFileChooser保存【英文标题】:SavingwithaJFileChooser【发布时间】:2012-03-1601:28:43【问题描述】:我使用JFileChooser和showSaveDialoge()和setSelectionMode(JfileChooser.DIRECTORIES_ONLY)来设置预选文件的保存位置和名称。我希望用户能够选择新... 查看详情

JFileChooser保存对话框建议文件名[重复]

】JFileChooser保存对话框建议文件名[重复]【英文标题】:JFileChooserSaveDialogSuggestFileName[duplicate]【发布时间】:2012-12-2212:38:35【问题描述】:可能重复:JFileChooser.showSaveDialog(…)-howtosetsuggestedfilename我已经看到这个问题被问了几次,... 查看详情

JFileChooser - 自定义文件名(创建新文件)

】JFileChooser-自定义文件名(创建新文件)【英文标题】:JFileChooser-Customfilename(createnewfile)【发布时间】:2012-12-0607:08:51【问题描述】:我可能在JFileChooserAPI中遗漏了一些明显的东西,但是当我尝试使用JFileChooser保存文件时,我... 查看详情

如何在 JFileChooser 保存对话框中处理问号或星号(“?”或“*”)?

】如何在JFileChooser保存对话框中处理问号或星号(“?”或“*”)?【英文标题】:HowdoIhandlequestionmarksorasterisks(\'?\'or\'*\')inJFileChoosersavedialog?【发布时间】:2021-06-0722:41:59【问题描述】:首先我创建一个JFileChooser,然后调用showS... 查看详情

java示例代码_如何在JFileChooser OpenDialog中使用两个文件扩展名之一的所有文件

java示例代码_如何在JFileChooser OpenDialog中使用两个文件扩展名之一的所有文件 查看详情

java示例代码_将文本文件保存在JFileChooser给定的路径中

java示例代码_将文本文件保存在JFileChooser给定的路径中 查看详情

JFileChooser - 设置固定文件名

】JFileChooser-设置固定文件名【英文标题】:JFileChooser-settingafixedfilename【发布时间】:2012-08-3013:27:44【问题描述】:我正在制作一个类似于带有代码突出显示的文本编辑器的应用程序。当我尝试保存一些文本时,我希望在JFileChoos... 查看详情

javagui问题。如何触动按钮后弹出文件浏览器和文件名选择框,选择保存目录?

...。求具体代码呀~~~新手求指导~参考技术A使用javaswing中的JFileChooser类就ok了importjavax.swing.JFileChooser;importjavax.swing.JPanel;importjavax.swing.filechooser.FileNameExtensionFilter;publicclassWebJianXuanZe publicstaticvoidfileChooser() JFileChooserchooser=newJFileChooser()... 查看详情

如何在 JFileChooser 中显示文件的默认系统图标?

】如何在JFileChooser中显示文件的默认系统图标?【英文标题】:HowtodisplaydefaultsystemiconforfilesinJFileChooser?【发布时间】:2013-07-1121:21:28【问题描述】:如何显示JFileChooser中文件的默认系统图标?即JFileChooser中文件的图标应该与桌... 查看详情

使用 JFileChooser 过滤文件类型

】使用JFileChooser过滤文件类型【英文标题】:FilterfiletypeswithJFileChooser【发布时间】:2013-10-1813:59:16【问题描述】:我正在使用JFileChooser选择一个文件,并且我试图将显示限制为仅显示jpg或jpeg文件。我已经尝试过FileFilter和Choosable... 查看详情

java用filedialog怎么打开和保存文件

...参考技术A这个你需要看下jdk有些麻烦给你看看我写的吧jFileChooser1.addActionListener(newActionListener()publicvoidactionPerformed(ActionEventarg0)if(jFileChooser1.CANCEL_OPTION==1)if(jFileChooser1.getSelectedFile()!=null)elsejDialog1.dispose();); 查看详情

取消在 JFileChooser 中选择文件而不关闭对话框

】取消在JFileChooser中选择文件而不关闭对话框【英文标题】:CancelselectingafilewithinJFileChooserwithoutclosingthedialogue【发布时间】:2013-05-0816:52:53【问题描述】:我正在尝试使用JFileChooser实现“另存为”对话框。该对话框应该使用户能... 查看详情

Java windowBuilder - 如何显示“文件已存在”警告?

...015-10-2509:18:50【问题描述】:我正在“windowbuilder”中使用Jfilechooser实现文件保存。我可以使用用户输入的名称保存文件,但如何显示警告“文件名已存在”或提供“覆盖现有文件 查看详情

简单的 JFileChooser FileFilter 不起作用

】简单的JFileChooserFileFilter不起作用【英文标题】:SimpleJFileChooserFileFilternotworking【发布时间】:2020-04-3018:08:03【问题描述】:以下是使用从this派生的JFileChooser将文件保存在用户输入目录上的简单代码,正如this另一个***问题的答... 查看详情

如何从 JFileChooser(JAVA Swing) 中禁用文件操作、文件选择和过滤面板?

】如何从JFileChooser(JAVASwing)中禁用文件操作、文件选择和过滤面板?【英文标题】:Howcanthedisablefileoperation,fileselectionandfilterpanelfromJFileChooser(JAVASwing)?【发布时间】:2009-04-2809:11:49【问题描述】:我需要在Panel中嵌入JFileChooser对话... 查看详情

有没有办法用我的 JfileChooser 中选择的扩展来保存我的 bufferedImage?

】有没有办法用我的JfileChooser中选择的扩展来保存我的bufferedImage?【英文标题】:IsthereawaytosavemybufferedImagewiththeextentionselectedinmyJfileChooser?【发布时间】:2019-04-0314:48:32【问题描述】:我的代码有问题。首先,我创建了一个JfileCh... 查看详情

java示例代码_读取用户使用JFileChooser选择的图像文件

java示例代码_读取用户使用JFileChooser选择的图像文件 查看详情