同名目录下同名的Java保存文件,扩展名不同

时间:2016-11-21 23:34:50

标签: java file-io

我正在编写一个非常基本的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*/

2 个答案:

答案 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();
    }