Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/iphone/40.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/google-sheets/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Iphone 获取文档目录中的目录数组_Iphone_Nsfilemanager - Fatal编程技术网

Iphone 获取文档目录中的目录数组

Iphone 获取文档目录中的目录数组,iphone,nsfilemanager,Iphone,Nsfilemanager,我试图返回应用程序文档目录中的目录列表。我能够得到一个包含给定扩展名的所有文件(例如.txt文件或.png文件)的数组,并且能够返回所有内容(包括目录)。当我只想返回目录时,问题就出现了。有没有一个简单的方法可以做到这一点 以下是我返回所有.txt文件的代码: - (ViewController *) init { if (self = [super init]) self.title = @"Text Files"; // get the list of .txt files

我试图返回应用程序文档目录中的目录列表。我能够得到一个包含给定扩展名的所有文件(例如.txt文件或.png文件)的数组,并且能够返回所有内容(包括目录)。当我只想返回目录时,问题就出现了。有没有一个简单的方法可以做到这一点

以下是我返回所有.txt文件的代码:

- (ViewController *) init {
    if (self = [super init]) self.title = @"Text Files";

    // get the list of .txt files
    directoryList = [[[[NSFileManager defaultManager] directoryContentsAtPath:DOCUMENTS_FOLDER] 
                      pathsMatchingExtensions:[NSArray arrayWithObjects:@".txt", nil]] retain];
    NSLog(@"%@", directoryList);

    return self;
}
和所有的文件

- (ViewController *) init {
    if (self = [super init]) self.title = @"Text Files";

    // get the list of all files and directories
    directoryList = [[[NSFileManager defaultManager] directoryContentsAtPath:DOCUMENTS_FOLDER] retain];

    NSLog(@"%@", directoryList);

    return self;
}
试试这个:

- (ViewController *) init {
    if (self = [super init]) self.title = @"Text Files";

    // get the list of all files and directories
    NSFileManager *fM = [NSFileManager defaultManager];
    fileList = [[fM directoryContentsAtPath:DOCUMENTS_FOLDER] retain];
    NSMutableArray *directoryList = [[NSMutableArray alloc] init];
    for(NSString *file in fileList) {
        NSString *path = [DOCUMENTS_FOLDER stringByAppendingPathComponent:file];
        BOOL isDir = NO;
        [fM fileExistsAtPath:path isDirectory:(&isDir)];
        if(isDir) {
            [directoryList addObject:file];
        }
    }

    NSLog(@"%@", directoryList);

    return self;
}

卢格先生写了这一切,只有一件事

fileList = [[fM directoryContentsAtPath:DOCUMENTS_FOLDER];
取而代之

fileList = [fileManager contentsOfDirectoryAtPath:filePath error:nil];

回答得很好。不知道fileExistsAtPath:isDirectory:instance方法;我将阅读NSFileManager文档。DirectoryContentsPath:已弃用。必须是DirectoryAtPath的子路径:instead@DerWOK这两种方法做的事情非常不同<代码>子路径目录路径:错误:递归列出子路径。
directoryContentsAtPath:
的正确替换为
contentsOfDirectoryAtPath:error:
正确。不推荐使用“directoryContentsAtPath”。