Java, создайте файл и папку - PullRequest
1 голос
/ 08 ноября 2011

Я создаю файлы с Java в Windows.Это работает:

String newFile = "c:/"+Utilities.timeFormat();
...
some code that creates a folder

Это не работает:

String newFile = "c:/newDirectory/"+Utilities.timeFormat();
...
some code that creates a folder

Ответы [ 5 ]

2 голосов
/ 08 ноября 2011

Вы должны использовать File.mkdir() или File.mkdirs() метод, чтобы создать папку .

EDIT:

 String path="c:/newDirectory";
 File file=new File(path);
 if(!file.exists())
     file.mkdirs(); // or file.mkdir()

 file=new File(path + "/" + Utilities.timeFormat());   
 if(file.createNewFile())
  {
  }
1 голос
/ 08 ноября 2011

, не зная вашего фактического кода, создающего каталог:

используйте mkdirs () вместо mkdir ()

0 голосов
/ 08 ноября 2011

Тот факт, что каталог не существует, возможно, поэтому он не работает в первый раз.Как уже отмечалось, использование mkdirs () гарантирует, что файл, который вы хотите записать, находится в подпапках, и создает их.Теперь вот как это может выглядеть:

File file = new File( new File("c:/newDirectory"), Utilities.timeFormat() );
if( !file.getParentFile().exists() ) {
   file.getParentFile().mkdirs();
}
OutputStream stream = new BufferedOutputStream( new FileOutputStream( file ) );
try {
   // put your code here to write the file
} finally {
   stream.close();
}

Обратите внимание, я не использую + для создания пути.Вместо этого я создаю объект File и передаю ему родительский файл и имя файла.Также обратите внимание, что я не помещаю разделители пути между родителем и именем файла.Использование конструктора файлов обеспечивает независимый от системы способ создания путей.

0 голосов
/ 08 ноября 2011

Если «newDirectory» еще не существует, вы должны использовать метод mkdirs() из класса File для создания всех каталогов между ними.

0 голосов
/ 08 ноября 2011

Можете ли вы проверить, есть ли у вас разрешения на создание папки в c:/?

Можете ли вы показать нам также трассировку стека?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...