Question

I was trying to make a directory and file using java with File object as:

import java.io.*;
class CreateFile{

    public static void main(String[] args) throws IOException{
        File f = new File("File/handling/file1.txt");
        if(!f.exists())
           f.createNewFile();
    }
}

but its showing error (see below) and unable to make it, the path and file name doesn't existed before execution. I don't know where am I going wrong, someone please clarify whats the mistake and how to resolve it? It might be I need to know something about File object, so please do tell me...

See error:

Exception in thread "main" java.io.IOException: The system cannot find the path
specified

    at java.io.WinNTFileSystem.createFileExclusively(Native Method)
    at java.io.File.createNewFile(File.java:947)
    at CreateFile.main(CreateFile.java:6)
Was it helpful?

Solution

The error is telling you that either there is no File directory relative to where you're running this, or there is but it doesn't have a handling subdirectory. In this case, exists returns false and so you call createNewFile to try to create the file, but the directory in which you're trying to create it doesn't exist, and so it throws an exception.

You can use mkdirs to create the directories if necessary, like so:

import java.io.*;
class CreateFile{

    public static void main(String[] args) throws IOException{
        File f = new File("File/handling/file1.txt");
        if(!f.exists()) {
           f.getParentFile().mkdirs(); // This is a no-op if it exists
           f.createNewFile();
        }
    }
}
Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top