Unix có một thư viện có thể thực hiện các hoạt động toàn cầu hóa tệp cho bạn. Các chức năng và loại được khai báo trong một tiêu đề được gọi glob.h
, vì vậy bạn sẽ cần đến #include
nó. Nếu mở một thiết bị đầu cuối, hãy mở trang man cho toàn cầu bằng cách nhập man 3 glob
bạn sẽ nhận được tất cả thông tin bạn cần biết để sử dụng các chức năng.
Dưới đây là một ví dụ về cách bạn có thể điền vào một mảng các tệp khớp với mẫu hình cầu. Khi sử dụng glob
chức năng có một vài điều bạn cần lưu ý.
- Theo mặc định,
glob
chức năng tìm kiếm các tệp trong thư mục làm việc hiện tại. Để tìm kiếm một thư mục khác, bạn cần phải thêm tên thư mục vào mẫu hình cầu như tôi đã thực hiện trong ví dụ của mình để lấy tất cả các tệp trong đó /bin
.
- Bạn chịu trách nhiệm dọn dẹp bộ nhớ được phân bổ bằng
glob
cách gọi globfree
khi bạn hoàn thành cấu trúc.
Trong ví dụ của tôi, tôi sử dụng các tùy chọn mặc định và không có cuộc gọi lại lỗi. Trang man bao gồm tất cả các tùy chọn trong trường hợp bạn muốn sử dụng cái gì đó trong đó. Nếu bạn sẽ sử dụng mã ở trên, tôi khuyên bạn nên thêm nó dưới dạng một danh mục NSArray
hoặc một cái gì đó tương tự.
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];
Chỉnh sửa: Tôi đã tạo một ý chính trên github có chứa đoạn mã trên trong một danh mục có tên NSArray + Globbing .