Kullanırken
file.createNewFile();
Aşağıdaki istisnayı alıyorum
java.io.IOException: Parent directory of file does not exist: /.../pkg/databases/mydb
Acaba eksik ana dizinleri oluşturan bir createNewFile var mı?
Yanıtlar:
Bunu denedin mi
file.getParentFile().mkdirs();
file.createNewFile();
Bunu yapacak tek bir yöntem çağrısı bilmiyorum, ancak iki ifade kadar kolay.
mkdirsoluşturmaya çalıştığınız dosya varolmayan bir dizinde değilse buna ihtiyacınız yoktur , ancak benim kullanım durumum, bazıları ana dizinlere sahipken diğerleri içermeyen birden fazla dosya oluşturmamdır .
Jon'un cevabı, bir dosyayı oluşturduğunuz yol dizesinin üst dizinleri içerdiğinden eminseniz, yani yolun formda olduğundan eminseniz işe yarar <parent-dir>/<file-name>.
Değilse, yani formun göreceli bir yoluysa <file-name>, o getParentFile()zaman geri dönecektir null.
Örneğin
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`.
Dolayısıyla, dosya yolunuz üst dizinleri içerebilir veya içermeyebilirse, aşağıdaki kodla daha güvendesiniz:
File f = new File(filename);
if (f.getParentFile() != null) {
f.getParentFile().mkdirs();
}
f.createNewFile();
new File("file.txt").getParentFile()dönernull,new File("dir/file.txt").getParentFile()aynı şeyi döndürürnew File("dir")