Java: как создать новую папку в Mac OS X - PullRequest
1 голос
/ 05 декабря 2011

Я хочу создать папку в ex.мой рабочий стол в Mac OS X

Я пытаюсь использовать этот код, вместо Mymac мое имя, конечно:)

String path="/Users/Mymac/Desktop";
String house = "My_home";
File file=new File(path);
if(!file.exists())
    file.mkdirs(); // or file.mkdir()

file=new File(path + "/" + house);   
try {
  if(file.createNewFile())
   {
   }
} catch (IOException ex) {

  ex.printStackTrace();
}

Знаете ли вы, как я могу создать новую папку?И еще одна вещь, когда я хочу создать папку в каталоге, где находится мой код, вы знаете, как я мог бы написать это?Я пытался

   String path="./";

   String path="::MyVolume";

   String path=".";

Ответы [ 4 ]

2 голосов
/ 05 декабря 2011

Независимый от платформы способ:

File rootDir = File.listRoots()[0];
File dir = new File(new File(new File(rootDir, "Users"), "Mymac"), "Desktop");
if (!dir.exists()){
    dir.mkdirs();
}
1 голос
/ 05 декабря 2011

Ваш код в порядке и будет работать. Возможно, у вас есть опечатка в вашем имени пользователя в вашем пути к файлу («Mymac»), поэтому вы не видите изменений, так как они идут в другую папку.

Запуск этого кода на моей машине работает нормально и дает ожидаемый результат.

Чтобы сделать ваш код независимым от платформы, вы можете создать свой путь к файлу с помощью следующего трюка:

File path = new File(File.listRoots()[0], "Users" + System.getProperty("file.separator") + "Mymac" + System.getProperty("file.separator") + "Desktop"));

Если «My_home» должен быть папкой, а не файлом, вы должны изменить команду file.createNewFile() -. Более подробную информацию вы найдете в ответе Томаса.

0 голосов
/ 05 декабря 2011

Чтобы найти папку / каталог, где находится один из ваших классов (при условии, что они не находятся в Jar), ​​а затем создать там подпапку:

    String resource = MyClass.class.getName().replace(".", File.separator) + ".class";      
    URL fileURL = ClassLoader.getSystemClassLoader().getResource(resource);

    String path = new File(fileURL.toURI()).getParent();
    String mySubFolder = "subFolder";
    File newDir = new File(path + File.separator + mySubFolder);
    boolean success = newDir.mkdir();

(Приведенный выше код можно сделать более компактным, я перечислил его более подробно, чтобы продемонстрировать все шаги.) Конечно, вам нужно беспокоиться о проблемах с разрешениями. Убедитесь, что у пользователя, работающего с Java, есть разрешение на создание новой папки.

0 голосов
/ 05 декабря 2011

Используйте file.mkdir() или file.mkdirs() вместо file.createNewFile(), и оно должно работать, если у вас есть разрешение на создание новых папок и файлов.

mkdirs() создаст подпапки, если они не существуют, mkdir() не будет.

Чтобы создать каталог в базовом каталоге (из которого вы запускаете приложение), просто укажите относительный путь: new File("mydir").mkdir();

Редактировать : чтобы упростить обработку файлов, я бы посоветовал вам также взглянуть на Apache Commons 'FilenameUtils и FileUtils.

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