Sai*_*ike 14 java swing jfilechooser save
我正在尝试使用保存文件JFileChooser.但是,我似乎遇到了一些麻烦.这是我的代码:
if (e.getSource() == saveMenu) {
JFileChooser chooser = new JFileChooser();
chooser.setFileSelectionMode(JFileChooser.DIRECTORIES_ONLY);
FileNameExtensionFilter xmlFilter = new FileNameExtensionFilter("xml files (*.xml)", "xml");
// add filters
chooser.addChoosableFileFilter(xmlFilter);
chooser.setFileFilter(xmlFilter);
int result = chooser.showSaveDialog(Simulation.this);
if (result == chooser.APPROVE_OPTION) {
writeToXML(chooser.getSelectedFile());
}
}
Run Code Online (Sandbox Code Playgroud)
这不会强制文件具有.xml扩展名,因此我尝试使用以下代码强制使用扩展名.xml保存文件
OutputFormat format = OutputFormat.createPrettyPrint();
format.setEncoding("UTF-8");
XMLWriter xmlWriter = null;
try {
xmlWriter = new XMLWriter(new OutputStreamWriter(
new FileOutputStream(f+".xml"), "UTF8"),
format);
Run Code Online (Sandbox Code Playgroud)
然而,这个我无法阻止写入用户xpto.xml的JFileChooser,如果他们这样做,该文件将有"两个扩展":这将是一个文件名为xpto.xml.xml
所以我的问题是:
JFileChooser默认保存xml文件?Nat*_*rot 19
正如您所注意到的,JFileChooser不执行FileFilter保存.它会使显示的对话框中的现有非XML文件变灰,但就是这样.要强制执行文件名,您必须完成所有工作.(这不仅仅是JFileChooser吮吸的问题 - 处理这是一个复杂的问题.您可能希望您的用户能够命名他们的文件xml.xml.xml.xml.)
在您的情况下,我建议使用FilenameUtilsCommons IO:
File file = chooser.getSelectedFile();
if (FilenameUtils.getExtension(file.getName()).equalsIgnoreCase("xml")) {
// filename is OK as-is
} else {
file = new File(file.toString() + ".xml"); // append .xml if "foo.jpg.xml" is OK
file = new File(file.getParentFile(), FilenameUtils.getBaseName(file.getName())+".xml"); // ALTERNATIVELY: remove the extension (if any) and replace it with ".xml"
}
Run Code Online (Sandbox Code Playgroud)
如果你想在这里的保存对话框中有多种类型,还有一些想法可以做:如何使用JFileChooser保存文件?
Dia*_*ake 11
只是为了明确如何使用JFileChooser来保存文件.
//set it to be a save dialog
chooser.setDialogType(JFileChooser.SAVE_DIALOG);
//set a default filename (this is where you default extension first comes in)
chooser.setSelectedFile(new File("myfile.xml"));
//Set an extension filter, so the user sees other XML files
chooser.setFileFilter(new FileNameExtensionFilter("xml file","xml"));
Run Code Online (Sandbox Code Playgroud)
现在,鼓励用户在此示例中将项目另存为xml文件,但实际上可能没有设置它.
if(chooser.showSaveDialog(this) == jFileChooser.APPROVE_OPTION)
{
String filename = chooser.getSelectedFile().toString();
if (!filename .endsWith(".xml"))
filename += ".xml";
//DO something with filename
}
Run Code Online (Sandbox Code Playgroud)
这是最简单的情况,如果您有多种可能的文件格式,那么您应该捕获所选的过滤器,验证THAT扩展,并根据所选格式保存文件.但如果你这样做,你可能是一个高级的java程序员,而不是利用这篇文章.
| 归档时间: |
|
| 查看次数: |
36129 次 |
| 最近记录: |