我想創建一個類,它有一個接收文件路徑(NSString)作爲參數的方法。查找給定的文件路徑在ios中是否有效?
我需要檢查給定的文件路徑是否有效,如果它是有效的我會在磁盤上做一些寫操作否則我會返回錯誤。
那麼,找出給定的路徑是否有效?
我想創建一個類,它有一個接收文件路徑(NSString)作爲參數的方法。查找給定的文件路徑在ios中是否有效?
我需要檢查給定的文件路徑是否有效,如果它是有效的我會在磁盤上做一些寫操作否則我會返回錯誤。
那麼,找出給定的路徑是否有效?
沒有必要先檢查路徑是否有效。只要繼續嘗試創建它,然後檢查是否成功。
createFileAtPath:內容:屬性:的NSFileManager的方法返回一個BOOL返回YES如果文件已經存在,或者在創造它沒有成功。
我建議使用這種方法並檢查返回的結果。如果它返回NO,則返回錯誤。
// Returns the URL to the application's Documents directory.
- (NSURL *)applicationDocumentsDirectory {
return [[[NSFileManager defaultManager] URLsForDirectory:NSDocumentDirectory inDomains:NSUserDomainMask] lastObject];
}
爲了您的例子,這會返回
在/ var /移動/應用/ 8EFCBF99-BC19-4AFE-934A-B47CBEDF2971 /文檔
是否幫助你嗎?我認爲該方法包含在所有使用Core Data的Xcode項目類型的AppDelegate中。
下面是一個例子:
NSString *validPath = [[[self applicationDocumentsDirectory] path] stringByAppendingPathComponent:@"test"];
NSString *invalidPath = @"/var/mobile/Applications/abc/test";
if (0 == [validPath rangeOfString:[[self applicationDocumentsDirectory] path]].location) {
// will be executed
NSLog(@"Valid path");
}
else {
NSLog(@"Invalid path");
}
if (0 == [invalidPath rangeOfString:[[self applicationDocumentsDirectory] path]].location) {
NSLog(@"Valid path");
}
else {
// will be executed
NSLog(@"Invalid path");
}
你是什麼意思的有效路徑?一個不包含非法字符或可能寫入的字符? – Paul
@paul我並不是指像/ ^#這樣的非法字符。我在期待用戶已經正確給出了/ var/mobile/Applications/8EFCBF99-BC19-4AFE-934A-B47CBEDF2971/Documents/fileName這樣的路徑。因爲該函數接收NSString作爲參數。所以我需要檢查它是否正確指向了沙盒。謝謝 – jailani