How to create a file in a directory in java?
If I want to create a file in C:/a/b/test.txt
, can I do something like:
File f = new File("C:/a/b/test.txt");
Also, I want to use FileOutputStream
to create the file. So how would I do it? For some reason the file doesn't get created in the right directory.
Solution 1:
The best way to do it is:
String path = "C:" + File.separator + "hello" + File.separator + "hi.txt";
// Use relative path for Unix systems
File f = new File(path);
f.getParentFile().mkdirs();
f.createNewFile();
Solution 2:
You need to ensure that the parent directories exist before writing. You can do this by File#mkdirs()
.
File f = new File("C:/a/b/test.txt");
f.getParentFile().mkdirs();
// ...
Solution 3:
With Java 7, you can use Path
, Paths
, and Files
:
import java.io.IOException;
import java.nio.file.FileAlreadyExistsException;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;
public class CreateFile {
public static void main(String[] args) throws IOException {
Path path = Paths.get("/tmp/foo/bar.txt");
Files.createDirectories(path.getParent());
try {
Files.createFile(path);
} catch (FileAlreadyExistsException e) {
System.err.println("already exists: " + e.getMessage());
}
}
}