1

私はグーグルを検索しようとしましたが、xcode を介して Mac 上のファイルとフォルダーを検索することについてほとんど何も思いつきませんでした。

それは可能ですか?コードサンプルなど

以前は Delphi でプログラミングしていましたが、パスを検索するためのスニペットはこれです。

procedure SearchFolders(path:string);
var
  sr : tsearchrec;
  res: integer;
  i:integer;
begin
  path:= includetrailingpathdelimiter(path);
  res:= findfirst(path+'*.*',faAnyfile,sr);
  while res = 0 do begin
    application.processmessages;
    if (sr.name <> '.') and (sr.name <> '..') then
      if DirectoryExists(path + sr.name) then
        SearchFolders(path + sr.name)
      else
          FileProcess.Add(path + sr.name);
          FileSize:=FileSize+sr.Size;
    res := findnext(sr);
  end;
  findclose(sr);
end;

有効にするには、この SearchFolders('C:\'); パスを検索して文字列リストに保存します。

xcode内のosxでどのように行われますか?

4

1 に答える 1

1

残念ながら、私はあなたのコードを完全には理解していません。ただし、通常NSFileManagerはファイルシステムの調査に使用します。

たとえば、特定のパスにあるすべてのファイル (つまり、ファイルとフォルダー) を一覧表示するには、次のようにします。

- (NSArray *) listFilesAtPath:(NSString*)path {
    NSFileManager *fileManager = [NSFileManager defaultManager];

    BOOL isDir;
    if(([fileManager fileExistsAtPath:path isDirectory:&isDir] == NO) && isDir) {
        // There isn't a folder specified at the path.
        return nil;
    }

    NSError *error = nil;
    NSURL *url = [NSURL fileURLWithPath:path];
    NSArray *folderItems = [fileManager contentsOfDirectoryAtURL:url
                             includingPropertiesForKeys:[NSArray arrayWithObjects:NSURLNameKey, NSURLIsDirectoryKey, nil]
                                                options:NSDirectoryEnumerationSkipsHiddenFiles
                                                  error:&error];

    if (error) {
        // Handle error here
    }
    return folderItems;
}

この方法の使用例を次に示します。

NSArray *folderItems = [self listFilesAtPath:@"/Users/1Rabbit/Desktop"];
for (NSURL *item in folderItems) {
    NSNumber *isHidden = nil;

    [item getResourceValue:&isHidden forKey:NSURLIsDirectoryKey error:nil];
    if ([isHidden boolValue]) {
        NSLog(@"%@ dir", item.path);
    }
    else {
        NSLog(@"%@", item.path);
    }
}
于 2012-10-14T00:51:44.133 に答える