[java新文件,当有条件的一部分时不返回布尔值

问题描述 投票:0回答:1

在我的Java程序中,这将创建一个目录,并在成功时返回布尔值true:

new File(String.valueOf(subdir)).mkdir();

那么为什么这不能作为布尔的第二部分呢?即,未创建目录,并且它不会返回布尔值true。

if (!subdir.exists() || new File(String.valueOf(subdir)).mkdir()) {
    logger.error("subdir not created");
}
java java-io
1个回答
2
投票

如果第一个条件已经为true并且使用OR ||运算符将这些条件合并在一起,则不会计算第二个条件。

类似地,如果第一个条件为&&,则不会为AND false运算符计算第二个条件。

对于逻辑运算,它是所谓的short circuit-因为如果已经定义了表达式的结果,则继续评估其他术语是没有意义的。

false && any_operand == false
true || any_operand == true

因此,在您的情况下,您需要在条件中使用&&,并且如果不存在父目录,则可能使用File::mkdirs()方法创建父目录:

if (!maint.exists() && !maint.mkdirs()) {
    logger.info("no directories {} created", maint);
}
© www.soinside.com 2019 - 2024. All rights reserved.