有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

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) 个答案

  1. # 1 楼答案

    如果第一个条件已经是true,并且这些条件使用OR||运算符联接,则不会计算第二个条件

    类似地,如果第一个条件为^{,则不计算AND&&运算符的第二个条件

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

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

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

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