2014-02-06 140 views
0

我想創建一個類,它有一個接收文件路徑(NSString)作爲參數的方法。查找給定的文件路徑在ios中是否有效?

我需要檢查給定的文件路徑是否有效,如果它是有效的我會在磁盤上做一些寫操作否則我會返回錯誤。

那麼,找出給定的路徑是否有效?

+0

你是什麼意思的有效路徑?一個不包含非法字符或可能寫入的字符? – Paul

+0

@paul我並不是指像/ ^#這樣的非法字符。我在期待用戶已經正確給出了/ var/mobile/Applications/8EFCBF99-BC19-4AFE-934A-B47CBEDF2971/Documents/fileName這樣的路徑。因爲該函數接收NSString作爲參數。所以我需要檢查它是否正確指向了沙盒。謝謝 – jailani

回答

3

沒有必要先檢查路徑是否有效。只要繼續嘗試創建它,然後檢查是否成功。

createFileAtPath:內容:屬性:的NSFileManager方法返回一個BOOL返回YES如果文件已經存在,或者在創造它沒有成功。

我建議使用這種方法並檢查返回的結果。如果它返回NO,則返回錯誤。

1
// 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"); 
} 
+1

如何驗證完整路徑(帶有文件名或ValidFilPathUptoDocument/Your ... Folder/_!%@#df_FileName「)?這是我在這裏的問題 – Mani

+0

@paul如果用戶提供由此產生的文件路徑方法,那麼它對我有好處,但是如果用戶給出了一些像「fhdajkfal」這樣的字符串,可以找到指向沙盒的路徑嗎? – jailani

+0

他要求一種方法告訴他沙盒的路徑(參見評論他沒有指定他是否期望一個文件,或者他只是想確保文件路徑位於沙箱內 – Paul

相關問題