Проверьте разрешения несуществующего файла в Java - PullRequest
0 голосов
/ 02 февраля 2012

Я хочу сделать что-то вроде:

if (!file.canWrite())
  throw Exception("Permission denied");
file.mkdirs();

Однако я не могу этого сделать, потому что canWrite работает только для файлов, которые уже существуют.Есть ли способ узнать, смогу ли я записать в файл, если он существует?


РЕДАКТИРОВАТЬ: Спасибо, я понимаю, я мог бы проверить, существует ли файл.Как поймут те из вас, кто прочитал третью строку кода, моя проблема в том, что mkdirs просто вернет false, если не смог создать каталог - нет объяснения, почему создание не удалось.

Дополнительно, mkdirs создаст файлы, вложенные произвольно глубоко.Поэтому мне нужно что-то вроде:

while(file.hasParent()){
  file = file.parent();
  if (!file.canWrite()) throw (..);
}

Как указывал Пол, мне тоже нужно знать маску.

Ответы [ 3 ]

2 голосов
/ 02 февраля 2012

Вы можете сначала проверить, существует ли файл:

boolean exists = file.exists();
2 голосов
/ 02 февраля 2012

Сделайте то же самое, но вместо этого в каталоге.Права на запись в каталог определяют, кто может и не может записать файл в этот каталог.

1 голос
/ 02 февраля 2012

Вы не можете проверить разрешения для чего-то, что не существует.Однако вы можете проверить, существует ли элемент, и если да, то проверить разрешения.

...