Unix, sizin için dosya globbing işlemleri yapabilen bir kütüphaneye sahiptir. İşlevler ve türler adlı bir başlıkta bildirildiğinden, buna glob.hihtiyacınız olacak #include. Bir terminal açarsanız ve glob için man sayfasını yazarak man 3 glob, işlevleri kullanmak için bilmeniz gereken tüm bilgileri alırsınız.
Aşağıda, bir globbing deseniyle eşleşen dosyaları bir diziye nasıl yerleştirebileceğinize ilişkin bir örnek verilmiştir. globİşlevi kullanırken aklınızda bulundurmanız gereken birkaç şey vardır.
- Varsayılan olarak,
globişlev geçerli çalışma dizinindeki dosyaları arar. Başka bir dizini aramak için, tüm dosyaları almak için örneğimde yaptığım gibi dizin adını globbing desenine eklemeniz gerekir /bin.
- Yapı ile işiniz bittiğinde
globarayarak ayrılan belleği temizlemek sizin sorumluluğunuzdadır globfree.
Örneğimde varsayılan seçenekleri kullanıyorum ve hata geri çağırma yok. Man sayfası, orada kullanmak istediğiniz bir şey olması durumunda tüm seçenekleri kapsar. Yukarıdaki kodu kullanacaksanız, bunu bir kategori NSArrayveya buna benzer bir şey olarak eklemenizi öneririm .
NSMutableArray* files = [NSMutableArray array];
glob_t gt;
char* pattern = "/bin/*";
if (glob(pattern, 0, NULL, >) == 0) {
int i;
for (i=0; i<gt.gl_matchc; i++) {
[files addObject: [NSString stringWithCString: gt.gl_pathv[i]]];
}
}
globfree(>);
return [NSArray arrayWithArray: files];
Düzenleme: NSArray + Globbing adlı kategoride yukarıdaki kodu içeren github üzerinde bir özü oluşturdum .