Is there a way in Java to determine if a path is valid without attempting to create a file? Is there a way in Java to determine if a path is valid without attempting to create a file? java java

Is there a way in Java to determine if a path is valid without attempting to create a file?


Path class introduced in Java 7 adds new alternatives, like the following:

/** * <pre> * Checks if a string is a valid path. * Null safe. *   * Calling examples: *    isValidPath("c:/test");      //returns true *    isValidPath("c:/te:t");      //returns false *    isValidPath("c:/te?t");      //returns false *    isValidPath("c/te*t");       //returns false *    isValidPath("good.txt");     //returns true *    isValidPath("not|good.txt"); //returns false *    isValidPath("not:good.txt"); //returns false * </pre> */public static boolean isValidPath(String path) {    try {        Paths.get(path);    } catch (InvalidPathException | NullPointerException ex) {        return false;    }    return true;}

Edit:
Note Ferrybig'scomment : "The only disallowed character in a file name on Linux is the NUL character, this does work under Linux."


This would check for the existance of the directory as well.

File file = new File("c:\\cygwin\\cygwin.bat");if (!file.isDirectory())   file = file.getParentFile();if (file.exists()){    ...}

It seems like file.canWrite() does not give you a clear indication if you have permissions to write to the directory.


File.getCanonicalPath() is quite useful for this purpose. IO exceptions are thrown for certain types of invalid filenames (e.g. CON, PRN, *?* in Windows) when resolving against the OS or file system. However, this only serves as a preliminary check; you will still need to handle other failures when actually creating the file (e.g. insufficient permissions, lack of drive space, security restrictions).