Тестирование на сетевой том
Q: Как я могу надежно определить, смонтирован ли объем по сети?
A: Существуют многочисленные способы протестировать, является ли объем сетевым томом. Лучший метод для использования зависит от уровня, в котором Вы работаете:
Если Вы работаете над кодом общего применения, необходимо использовать NSURL для этого. Создайте URL для любого элемента на объеме и затем вызовите
-getResourceValue:forKey:error:добиратьсяNSURLVolumeIsLocalKeyключ; возвращенное значение будет ложью (kCFBooleanFalse) для сетевого тома и истины (kCFBooleanTrue) для локального тома.Если Вы программируете на уровне BSD, можно вызвать statfs и протестировать
MNT_LOCALфлаг вf_flagsполе, которое это возвращает. Также можно вызвать getattrlist для запросаATTR_VOL_MOUNTFLAGSатрибут, который может быть более эффективным, чемstatfsпри некоторых обстоятельствах.
Одно слово предупреждения здесь: различие между сетевыми томами и локальными томами является несколько расплывчатым теперь. Например, Вы не можете предположить, что сетевые тома являются медленными, или что локальные тома не должны иметь дело с проблемами захвата файла. В целом необходимо протестировать на существование определенной функциональности вместо того, чтобы делать предположения на основе типа объема. Например, можно использовать NSURLVolumeSupportsAdvisoryFileLockingKey ключ, чтобы определить, поддерживает ли объем консультативную блокировку.
История версии документа
| Дата | Примечания |
|---|---|
| 20.09.2011 | Переписанный для описания последних методов. |
| 01.06.1998 | Новый документ, показывающий, как определить, смонтирован ли объем по сети. |