Get all folders of URL

2020-01-27 08:30发布

问题:

Hi I'm trying to read all files from a given server. What I want to do:

  • Read all the folders
  • Get the file URLs inside the folders

I tried this to get the folders and filey of my server, but it returned me an array with the folders of my 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:&error]];
if (error != nil) {
    NSLog(@"ERROR: %@",[error localizedDescription]);
}
NSLog(@"%@",contentList);

Log:

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

Can anyone help me to find the answer? I'm really confused and Google didn't find a good solution or tutorial.

Thanks a lot, mavrick3.

回答1:

You can not make use of NSFileManager to access the remote folders. This class is able to access the local directories only.
If your server supports FTP connection then you can make use of CFFTPStream.
CFFTPStream Reference



回答2:

You can't do this with NSFileManager. NSFileManager is intended to work with your file system (your device's file system) not with server.

you need to create a server side file which should give you folder/files url in xml file



回答3:

So if I understand correctly, you have the list of all the folders in the folder you need to read, but now you need specific files from each folder?

Then why don't you create a for-loop?

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

EDIT: If you mean you get the files from your Mac instead of the server you need, then you should change the line contentsOfDirectoryAtURL:directory to something like contentsOfDirectoryAtURL:@"http://localhost/myserver/.