WARNING: File.mkdir() is ignored

16,217

Solution 1

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.

Solution 2

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
   }
}

Solution 3

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.

Solution 4

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

Share:
16,217
Srikar Reddy
Author by

Srikar Reddy

Experienced Android Developer, 6 years in building, integrating, testing and supporting Android applications for mobile and tablet devices.

Updated on June 01, 2022

Comments

  • Srikar Reddy
    Srikar Reddy about 2 years

    I've created a basic Audio Recording App using Media Recorder API's. I'm trying to create a folder in the SD card and to save my recorded files to that folder. I'm getting this warning with following code.

    File.mkdir() is ignored

        // Assign random number to avoid audio file from overwriting
        Long tsLong = System.currentTimeMillis()/1000;
    
        // Specify a Location for the recorded file to be stored in the SD card
        mFileName = Environment.getExternalStorageDirectory().getAbsolutePath() + "/AudioRecordTest/";
        File path = new File(mFileName);
        if(!path.exists()) {
            path.mkdir();
        }
        mFileName += "/AudioRecordTest_" + tsLong.toString() + ".mp3";
    

    How to solve this warning message. Feel free to modify the code if there is any other mistake.