Проверка, существует ли файл, когда файл на внешнем устройстве
Файл списка воспроизведения.m3u содержит записи, доступные на внешнем устройстве (в данном случае на USB-диске), такие как:
/Volumes/KINGSTON/folder/mytitle.mp3
Я хотел бы проверить, существует ли файл:
NSURL *url = [NSURL URLWithString:@"/Volumes/KINGSTON/folder/mytitle.mp3"];
NSFileManager *manager = [NSFileManager defaultManager];
NSLog(@"%d",[manager fileExistsAtPath:[url absoluteString]]); //returns 0. I expect 1
Я также попробовал:
NSURL *u = [[NSURL alloc]initWithScheme:@"/Volumes" host:@"/KINGSTON" path:@"/folder/mytitle.mp3"];
NSLog(@"%d",[manager fileExistsAtPath:[u absoluteString]]); //0
Что я сделал не так?
Спасибо,
Roland
2 ответа
NSURL *url = [NSURL URLWithString:@"/Volumes/KINGSTON/folder/mytitle.mp3"];
Эта строка не описывает URL. Это путь. использование fileURLWithPath:
,
NSLog(@"%d",[manager fileExistsAtPath:[url absoluteString]]);
absoluteString
не возвращает путь; он возвращает строку, описывающую URL. использование path
,
Или, еще лучше, используйтеcheckResourceIsReachableAndReturnError:
,
Я также попробовал:
NSURL *u = [[NSURL alloc]initWithScheme:@"/Volumes" host:@"/KINGSTON" path:@"/folder/mytitle.mp3"];
/ Volumes не является схемой, /KINGSTON не является хостом, а /folder/mytitle.mp3 является путем, но не ссылается ни на что, что существует.
Схема для URL файла file:
и хост, как правило, либо localhost, либо пустая строка. Путь к URL-адресу файла - это полный абсолютный путь к файлу.
В вашем первом примере вам нужно использовать +[NSURL fileURLWithPath:]
, Во втором примере я вижу, что вы пытаетесь сделать, но вы просто делаете это неправильно.
Я предполагаю, что есть причина, по которой вы беспокоитесь NSURL
когда у вас есть путь, вы можете пройти прямо к -fileExistsAtPath:
?