文件的三元运算 (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...
我需要创建一个临时文件。但是在创建它之前,我需要使用 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...