Получить все папки с URL

#iphone #objective-c #nsfilemanager

#iPhone #objective-c #nsfilemanager

Вопрос:

Привет, я пытаюсь прочитать все файлы с данного сервера. Что я хочу сделать:

  • Прочитать все папки
  • Получить URL-адреса файлов внутри папок

Я попробовал это, чтобы получить папки и файлы моего сервера, но он вернул мне массив с папками моего MacBook:

 NSURL *directory = [NSURL URLWithString:@"linktoserver"];
NSFileManager *fileManager = [NSFileManager defaultManager];
NSError *error = nil;
self.contentList = [[NSArray alloc] initWithArray:[fileManager contentsOfDirectoryAtURL:directory includingPropertiesForKeys:[[NSArray alloc] initWithObjects:NSURLNameKey, nil] options:NSDirectoryEnumerationSkipsHiddenFiles error:amp;error]];
if (error != nil) {
    NSLog(@"ERROR: %@",[error localizedDescription]);
}
NSLog(@"%@",contentList);
  

Войти:

 > 2011-04-06 15:37:38.413 Bildergalerie[744:207] (
>     "file://localhost/Applications/",
>     "file://localhost/Benutzerhandbücher und Informationen",
>     "file://localhost/Cancel",
>     "file://localhost/Developer/",
>     "file://localhost/Library/",
>     "file://localhost/opt/",
>     "file://localhost/Shockwave Log",
>     "file://localhost/System/",
>     "file://localhost/Users/",
>     "file://localhost/usr/" )
  

Кто-нибудь может помочь мне найти ответ? Я действительно в замешательстве, и Google не нашел хорошего решения или руководства.

Большое спасибо, mavrick3.

Ответ №1:

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

вам нужно создать файл на стороне сервера, который должен предоставить вам URL папки / файлов в xml-файле

Ответ №2:

Вы не можете использовать NSFileManager для доступа к удаленным папкам. Этот класс может получить доступ только к локальным каталогам.
Если ваш сервер поддерживает FTP-соединение, вы можете использовать CFFTPStream.
Ссылка на CFFTPStream

Ответ №3:

Итак, если я правильно понимаю, у вас есть список всех папок в папке, которую вам нужно прочитать, но теперь вам нужны конкретные файлы из каждой папки?

Тогда почему бы вам не создать цикл for?

 for (int i = 0; i < [contentlist count]; i  
{
    //do your trick to get the file in the folder
    //save it
}
  

РЕДАКТИРОВАТЬ: Если вы имеете в виду, что получаете файлы со своего Mac вместо нужного вам сервера, то вам следует изменить строку contentsOfDirectoryAtURL:directory на что-то вроде contentsOfDirectoryAtURL:@"http://localhost/myserver/ .