#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/
.