gpt4 book ai didi

java - 使用 JFileChooser 输出多个文件

转载 作者:行者123 更新时间:2023-12-02 10:38:19 25 4
gpt4 key购买 nike

我有一个用Java swing构建的软件,除了用户导出的文件之外,我还需要输出元数据文件。我可以单独导出数据文件或元数据文件,但我始终无法同时输出这两个文件。我知道 JFileChooser 有 chooser.setSelectedFiles()chooser.getSelectedFiles() 用于此类目的。有人可以告诉我如何正确使用它们吗?以下是我尝试过的代码(但不起作用):

File[] outputFiles = new File[]{
new File(fileName+".txt"),
new File(fileName+"_metadata.txt")};

exportChooser.setSelectedFiles(outputFiles);

int returnVal = exportChooser.showDialog(null, "Export");
if(returnVal == JFileChooser.APPROVE_OPTION){
File[] files = exportChooser.getSelectedFiles();
......
}

这里还有一些其他代码...

try{
BufferedWriter out = new BufferedWriter(new FileWriter(files[0]));
writer.write(d, format, out);
out.close();
BufferedWriter md_out = new BufferedWriter(new FileWriter(files[1]));
List<String> metadata = d.getAgilentMetadata();
for(int i=0;i<metadata.size(); i++) {
md_out.write(metadata.get(i));
md_out.write("\n");
}
md_out.close();

}catch(Exception e){...}

提前谢谢您!

最佳答案

好吧,不是尝试指定两个文件,而只是提示输入一个文件,然后将(扩展名和)元名称部分应用于它?

然后你可以做类似的事情......

int returnVal = exportChooser.showDialog(null, "Export");
if (returnVal == JFileChooser.APPROVE_OPTION) {
File file = exportChooser.getSelectedFile();
File path = file.getParentFile();
String name = file.getName();
if (!name.toUpperCase().endsWith(".txt")) {
name += ".txt";
}
String metaName = name.substring(0, name.lastIndexOf("."));
metaName += "_metadata.txt";

File outputFile = new File(path, name);
File metaFile = new File(path, metaName);
}

注意:您可能需要自己决定如何处理可能的现有扩展,我只是要求以 .txt 结尾

然后你就可以写出类似的内容

try (BufferedWriter bw = new BufferedWriter(new FileWriter(outputFile))) {
// Write stuff...

try (BufferedWriter metaBW = new BufferedWriter(new FileWriter(metaFile))) {
// Write meta data
}
} catch (IOException ex) {
ex.printStackTrace();
}

如果,您必须能够单独选择元数据文件(这对我来说没有意义,因为那么如何将这两个文件关联在一起?),您将需要检查由JFileChooser 并验证您是否拥有预期/所需数量的文件

关于java - 使用 JFileChooser 输出多个文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53112844/

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