java 新文件在条件的一部分时不返回布尔值

java new file not returning a boolean when part of a conditional

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

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

那么为什么它不能作为这个布尔值的第二部分呢?即,目录没有被创建,它没有 return 布尔值 true.

if (!subdir.exists() || new File(String.valueOf(subdir)).mkdir()) {
    logger.error("subdir not created");
}

如果第一个条件已经是true并且条件是用OR ||运算符连接的,则不会计算第二个条件。

同样,如果第一个条件是 false,则不会为 AND && 运算符计算第二个条件。

它被称为 short circuit 用于逻辑运算 - 因为如果表达式的结果已经定义,继续计算其他项是没有意义的:

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

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

if (!maint.exists() && !maint.mkdirs()) {
    logger.info("no directories {} created", maint);
}