cdm/src/main/java/ucar/nc2/util/DiskCache2.java
public static boolean canWrite(File f) {
    Path path = f.toPath().toAbsolutePath();

    try {
      if (Files.isDirectory(path)) {
        // Try to create a file within the directory to determine if it's writable.
        Files.delete(Files.createTempFile(path, "check", null));
      } else if (Files.isRegularFile(path)) {
        // Try to open the file for writing in append mode.
        Files.newOutputStream(path, StandardOpenOption.APPEND).close();
      } else {
        // File does not exist. See if it's parent directory exists and is writeable.
        Files.delete(Files.createTempFile(path.getParent(), "check", null));
      }
    } catch (IOException | SecurityException e) {
      return false;
    }

    return true;
  }
public static boolean canWrite(File f) {
    Path path = f.toPath().toAbsolutePath();

    try {
      if (Files.isDirectory(path)) {
        // Try to create a file within the directory to determine if it's writable.
        Files.delete(Files.createTempFile(path, "check", null));
      } else if (Files.isRegularFile(path)) {
        // Try to open the file for writing in append mode.
        Files.newOutputStream(path, StandardOpenOption.APPEND).close();
      } else {
        // File does not exist. See if it's parent directory exists and is writeable.
        Files.delete(Files.createTempFile(path.getParent(), "check", null));
      }
    } catch (IOException | SecurityException e) {
      return false;
    }

    return true;
  }
public static boolean canWrite ( File f ) { Path path = f . toPath ( ) . toAbsolutePath ( ) ; try { if ( Files . isDirectory ( path ) ) { // Try to create a file within the directory to determine if it's writable. Files . delete ( Files . createTempFile ( path , "check" , null ) ) ; } else if ( Files . isRegularFile ( path ) ) { // Try to open the file for writing in append mode. Files . newOutputStream ( path , StandardOpenOption . APPEND ) . close ( ) ; } else { // File does not exist. See if it's parent directory exists and is writeable. Files . delete ( Files . createTempFile ( path . getParent ( ) , "check" , null ) ) ; } } catch ( IOException | SecurityException e ) { return false ; } return true ; }
Returns {@code true} if we can write to the file.

@param f a file. It may be a regular file or a directory. It may even be non-existent, in which case the
writability of the file's parent dir is tested.
@return {@code true} if we can write to the file.
Returns { @code true } if we can write to the file .