我正在编写一个非常基本的java程序,它接受一个文件,进行一些修改并将输出保存在不同的文件中。我的问题是我想以相同的名称保存它,但使用不同的扩展名。
我当前的代码使用JFileChooser获取原始文件,将其转换为路径,并使用.resolveSibling()方法。但是,这会导致 test.ngc 的输出保存在 test.ngc.fnc
中有没有什么好方法可以保存同名文件,但选择的文件扩展名不同?
Path originalFile = null;
JFileChooser chooser = new JFileChooser(".ngc");
chooser.setFileFilter(new FileNameExtensionFilter("Pycam G Code files", "ngc"));
if (chooser.showOpenDialog(null) == JFileChooser.APPROVE_OPTION)
{
originalFile = chooser.getSelectedFile().toPath();
}
Path newFile = originalFile.resolveSibling(originalFile.getFileName() + ".fnc");
/* does reading and modification and saving here using BufferedReader and BufferedWriter*/
答案 0 :(得分:1)
这应该有效:
String originalFilename = originalFile.getFileName();
String fileNameNew = originalFilename.substring(0, originalFilename.length()-".ngc".length())+".fnc";
Path newFile = originalFile.resolveSibling(fileNameNew);
答案 1 :(得分:1)
要将输出保存在具有不同扩展名(.fnc
)的其他文件中,您可以使用regex
(正则表达式)使用replaceFirst
方法替换它:
Path originalFile ;
String pathName ;
JFileChooser chooser = new JFileChooser(".ngc");
chooser.setFileFilter(new FileNameExtensionFilter("Pycam G Code files", "ngc"));
if (chooser.showOpenDialog(null) == JFileChooser.APPROVE_OPTION) {
originalFile = chooser.getSelectedFile().toPath();
pathName = originalFile.toAbsolutePath().toString().replaceFirst("\\b.ngc\\b", "");
Path newFile = originalFile.resolveSibling(pathName + ".fnc");
File file = new File(newFile.toUri());
file.createNewFile();
}