WARNING: File.mkdir() is ignored

∥☆過路亽.° 提交于 2019-11-30 18:27:38

Correct me if I'm wrong, but I expect that the (compilation) warning message really says this:

Result of File.mkdir() is ignored

... or something like that. It is telling you that you are ignoring the result of the mkdir() call that tells you whether or not a directory was created.

One way to avoid the warning would be to test the result and act appropriately. Another would be to simply assign the result to a temporary variable, ignore it, and (potentially) crash later because the directory wasn't created when it should have been.

(Guess which solution is better ...)


Feel free to modify the code if there is any other mistake.

Since you asked ... it is BAD STYLE to use Hungarian notation for Java variable names. Java is a strongly typed language where all variables have a clear declared types. You should not need the mental crutches of some ghastly identifier convention to tell you what a variable's type is intended to be.

As @Stephen C suggests, i handled in these ways

1)

boolean isDirectoryCreated= path.mkdir();

and ignore 'isDirectoryCreated'

2) (Recommended)

 boolean isDirectoryCreated=path.exists();
 if (!isDirectoryCreated) {
     isDirectoryCreated= path.mkdir();
 }
 if(isDirectoryCreated) {
    // do something
 }

3)

if (!path.exists()) {
   if(path.mkdir()){
     // do something
   }
}

If you want to ignore this warning, add this on the method: @SuppressWarnings("all")

I created a utility function:

@SuppressWarnings("unused")
private static void IGNORE_RESULT(boolean b) {}

And then to use:

IGNORE_RESULT(path.mkdir());

I like this solution because it is self documenting. You are explicitly stating that you know there is a result and you are intentionally ignoring it. It should also optimize out to a NOP during compilation so there is no unnecessary test at runtime just to suppress a useless warning.

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!