繁体   English   中英

如何在iPhone SDK中列出所有文件夹及其子目录/文件?

[英]How to list all folders and their subdirectories/files in iPhone SDK?

我希望用户选择她/他的iPhone中存在的任何文件,以便将其用作电子邮件附件。 为此,我想显示iPhone中存在的所有文件和文件夹的列表。 但是我如何获得这些文件的列表? 有没有办法获得该名单?

考虑到您的应用程序在沙箱中运行,并且无法获取该沙箱之外的任何文件夹/文件。

的ObjectiveC

NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES); 
NSString *documentsDirectory = [paths objectAtIndex:0];

NSFileManager *manager = [NSFileManager defaultManager];
NSArray *fileList = [manager contentsOfDirectoryAtPath:documentsDirectory error:nil];
for (NSString *s in fileList){
    NSLog(@"%@", s);
}

斯威夫特4

guard let documentsDirectory =  try? FileManager().url(for: .documentDirectory, in: .userDomainMask, appropriateFor: nil, create: true) else { return }
guard let fileEnumerator = FileManager.default.enumerator(at: documentsDirectory, includingPropertiesForKeys: nil, options: FileManager.DirectoryEnumerationOptions()) else { return }
while let file = fileEnumerator.nextObject() {
    print(file)
}

这是最慢的(?)方法:

NSFileManager * fileManager = [NSFileManager new];
NSArray * subpaths = [fileManager subpathsAtPath:path];

但这至少应该指向一个更专业的实现来满足您的需求。

允许您按需枚举的略低级别的抽象包括NSDirectoryEnumeratorCFURLEnumerator -[NSFileManager subpathsAtPath:]相比,根据目录的深度,它们有可能与文件系统保存很多不必要的交互。

您可以使用NSDirectoryEnumerator通过NSFileManager.enumeratorAtPath

来自文档:

NSString *docsDir = [NSHomeDirectory() stringByAppendingPathComponent:  @"Documents"];
NSFileManager *localFileManager=[[NSFileManager alloc] init];
NSDirectoryEnumerator *dirEnum =
    [localFileManager enumeratorAtPath:docsDir];

NSString *file;
while ((file = [dirEnum nextObject])) {
    if ([[file pathExtension] isEqualToString: @"doc"]) {
        // process the document
        [self scanDocument: [docsDir stringByAppendingPathComponent:file]];
    }
}

迅捷3

    let fileManager:FileManager = FileManager()
    let files = fileManager.enumerator(atPath: NSHomeDirectory())
    while let file = files?.nextObject() {
        print("Files::",file)
    }

我是FileExplorer控件的作者,它是iOS的文件浏览器,可满足您的大部分要求。 请注意,它允许您仅浏览放置在沙箱中的文件和目录。

以下是我控制的一些功能:

  1. 如果需要,可以选择文件或/和目录
  2. 如果需要,可以删除文件或/和目录
  3. 内置搜索功能
  4. 查看音频,视频,图像和PDF文件。
  5. 可以添加对任何文件类型的支持。

你可以在这里找到我的控件。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM