Bạn có thể sử dụng hệ điều hành access()
gọi hệ thống cho một thử nghiệm nhanh chóng và đơn giản, từ man access
:
#include <unistd.h>
int truy cập (const char * path, int amode);
Chức năng truy cập() kiểm tra khả năng truy cập của tệp có tên theo đường dẫn cho quyền truy cập được chỉ định bởi amode. Giá trị của amode là bao gồm bit hoặc OR của các quyền truy cập cần được kiểm tra (R_OK cho quyền đọc, W_OK cho phép ghi và X_OK để thực thi/tìm kiếm sự cho phép ) hoặc kiểm tra sự tồn tại, F_OK. Tất cả các thành phần của đường dẫn đều được chọn cho các quyền truy cập (bao gồm F_OK).
Nếu không tìm thấy đường dẫn hoặc nếu bất kỳ chế độ truy nhập mong muốn nào không được cấp thì giá trị -1 được trả về và biến số nguyên chung errno được đặt để cho biết lỗi. Nếu không, giá trị 0 sẽ được trả về.
Bạn khá này lên cho Objective-C có thể sử dụng một cái gì đó như:
typedef enum
{
ReadAccess = R_OK,
WriteAccess = W_OK,
ExecuteAccess = X_OK,
PathExists = F_OK
} AccessKind;
BOOL isPathAccessible(NSString *path, AccessKind mode)
{
return access([path UTF8String], mode) == 0;
}
Tôi tò mò tại sao bạn muốn kiểm tra xem có thể truy cập vị trí hay không. Thông thường, bạn * chỉ định * vị trí nào có thể truy cập trong các quyền, và sau đó nhận quyền truy cập vào các tệp khác thông qua hộp mở/lưu. –