Câu trả lời:
Bạn đã thử cái này chưa?
file.getParentFile().mkdirs();
file.createNewFile();
Tôi không biết về một lệnh gọi phương thức duy nhất sẽ thực hiện điều này, nhưng nó khá dễ dàng với hai câu lệnh.
mkdirsnếu tệp bạn đang cố gắng tạo không nằm trong thư mục không tồn tại, nhưng trường hợp sử dụng của tôi là tôi đang tạo nhiều tệp, một số tệp có thư mục mẹ, trong khi những tệp khác thì không.
Câu trả lời của Jon hoạt động nếu bạn chắc chắn rằng chuỗi đường dẫn mà bạn đang tạo tệp bao gồm các thư mục mẹ, tức là nếu bạn chắc chắn rằng đường dẫn có dạng <parent-dir>/<file-name>.
Nếu nó không, tức là nó là một đường dẫn tương đối của biểu mẫu <file-name>, sau đó getParentFile()sẽ trả về null.
Ví dụ
File f = new File("dir/text.txt");
f.getParentFile().mkdirs(); // works fine because the path includes a parent directory.
File f = new File("text.txt");
f.getParentFile().mkdirs(); // throws NullPointerException because the parent file is unknown, i.e. `null`.
Vì vậy, nếu đường dẫn tệp của bạn có thể có hoặc không bao gồm các thư mục mẹ, bạn sẽ an toàn hơn với mã sau:
File f = new File(filename);
if (f.getParentFile() != null) {
f.getParentFile().mkdirs();
}
f.createNewFile();
new File("file.txt").getParentFile()lợi nhuậnnull,new File("dir/file.txt").getParentFile()trả về giống nhưnew File("dir")