【问题标题】:List ALL Files on iPhone列出 iPhone 上的所有文件
【发布时间】:2011-10-29 08:13:04
【问题描述】:

在 Objective C 中,我如何获得 iPhone 上所有文件的列表?

这是否可能,或者我只能从某个目录或已知路径获取文件?

【问题讨论】:

  • 您只能在沙箱中获取文件。

标签: iphone objective-c file detect nsfilemanager


【解决方案1】:

没有越狱你的手机。所有应用都位于沙盒中,并且只能查看某些文件。

【讨论】:

    【解决方案2】:

    不,您只能在沙箱中获取文件。并使用以下代码显示您的当前目录:

    - (NSString *) returnFilePath {
        NSArray *pathArray =
        NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
    
        return [pathArray objectAtIndex:0];
    }
    

    【讨论】:

      【解决方案3】:

      我不确定为什么人们会说您的应用只能查看沙箱内的某些文件。从 iOS 2.x 开始(我上次尝试过这样的操作),您可以使用 NSFileManager 列出几乎任何目录中的文件。这是获取特定目录中所有文件名称的all的小代码。

      - (NSArray *)allFiles:(NSString *)aPath
          NSMutableArray * listing = [NSMutableArray array];
          NSArray * fileNames = [[NSFileManager defaultManager] contentsOfDirectoryAtPath:aPath error:nil];
          if (!fileNames) return listing;
          for (NSString * file in fileNames) {
              NSString * absPath = [aPath stringByAppendingPathComponent:file];
              BOOL isDir = NO;
              if ([[NSFileManager defaultManager] fileExistsAtPath:absPath isDirectory:&isDir]) {
                  if (isDir) {
                      [listing addObject:absPath];
                      [listing addObjectsFromArray:[self allFiles:absPath]];
                  } else {
                      [listing addObject:absPath];
                  }
              }
          }
          return listing;
      }
      

      这是一个非常简单的递归函数的例子。当然,它可以修改为更有效地使用块作为回调,甚至合并NSOperation

      【讨论】:

      • 抱歉,将startPath(通过的参数)替换为aPath
      猜你喜欢
      • 2013-12-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多