文件的三元运算 (nio/Java 7)

Ternary Operation on Files (nio/Java 7)

我需要创建一个临时文件。但是在创建它之前,我需要使用 Files 检查它是否存在 Path。我可以使用以下方法实现它:

    Path docName;
    try {
        if (Files.exists(docName)) {
            Files.delete(docName);
        }
    } catch (Exception ex) {
    }

    try {
        docName = Files.createFile(docName);
    } catch (FileAlreadyExistsException ignoreit) {
    }

想知道是否有办法使用 Java 7+ API 来最小化上述问题。一种优雅的方式,我的意思是说。

例如,如果我尝试以下操作,则使用三元运算符:

????  result = Files.exists(docName) ? Files.delete(docName) : Files.createFile(docName);

问题: 我应该用什么(数据类型)代替 ????

没有,三元表达式只有在两个分支 return 相同(或兼容)类型时才有效,并且它与您的其他代码不同。 delete() returns void while create() returns a Path.

try {
    if (Files.exists(docPath))
        Files.delete(docPath);
    docPath = Files.create(docPath)
}
catch...