FileNotFound исключение при попытке записи в файл - PullRequest
8 голосов
/ 30 марта 2010

ОК, я чувствую, что это должно быть легко, но, очевидно, я упускаю что-то фундаментальное для записи файлов в Java. У меня есть это:

File someFile = new File("someDirA/someDirB/someDirC/filename.txt");

и я просто хочу записать в файл. Однако, хотя someDirA существует, someDirB (и, следовательно, someDirC и filename.txt) не существует. Делаем это:

BufferedWriter writer = new BufferedWriter(new FileWriter(someFile));

бросает FileNotFoundException. Ну, не шучу. Я пытаюсь все это создать. Нужно ли разбивать путь к файлу на компоненты, создавать каталоги, а затем создавать файл перед созданием объекта FileWriter?

Ответы [ 2 ]

17 голосов
/ 30 марта 2010

Сначала вы должны создать все предыдущие каталоги. И здесь - как это сделать. Вам необходимо создать File объект, представляющий путь, который вы хотите существовать, и затем вызвать .mkdirs () для него. Затем убедитесь, что вы создали новый файл.

final File parent = new File("someDirA/someDirB/someDirC/");
if (!parent.mkdirs())
{
   System.err.println("Could not create parent directories ");
}
final File someFile = new File(parent, "filename.txt");
someFile.createNewFile();
2 голосов
/ 30 марта 2010

Вы можете использовать метод "mkdirs" в классе File в Java. mkdirs создаст ваш каталог и при необходимости создаст любые несуществующие родительские каталоги.

http://java.sun.com/j2se/1.4.2/docs/api/java/io/File.html#mkdirs%28%29

...