java新文件作为条件的一部分时不返回布尔值
在我的Java程序中,这将创建一个目录,并在成功时返回布尔值true:
new File(String.valueOf(subdir)).mkdir();
那么,为什么它不能作为布尔值的第二部分呢?也就是说,不会创建目录,也不会返回布尔值true
if (!subdir.exists() || new File(String.valueOf(subdir)).mkdir()) {
logger.error("subdir not created");
}
# 1 楼答案
如果第一个条件已经是
true
,并且这些条件使用OR||
运算符联接,则不会计算第二个条件类似地,如果第一个条件为^{,则不计算AND
&&
运算符的第二个条件对于逻辑运算,它被称为
short circuit
,因为如果表达式的结果已经定义,则继续计算其他术语是没有意义的:因此,在您的情况下,您需要在条件中使用
&&
,如果父目录不存在,则可能使用File::mkdirs()
方法来创建父目录: