2011-12-27 174 views
0

比方說,我在路徑/documents/recording.caf上有一個文件,我想將它複製到文件夾/ documents /文件夾中。我將如何做到這一點?如果我想使用下面的代碼,看起來好像我必須在路徑中包含文件名和擴展名,我不會總是知道這一點。將文件複製到其他目錄

NSFileManager *fileManager = [NSFileManager defaultManager]; 
NSString *documentsDirectory = [paths objectAtIndex:0]; 

NSString *newPath = [documentsDirectory stringByAppendingPathComponent:@"/temporary/recording.caf"]; 

if ([fileManager fileExistsAtPath:newPath] == NO) { 

    [fileManager copyItemAtPath:file toPath:newPath error:&error]; 

    } 

} 

tableview用它在目錄中找到的每個文件進行更新,如果用戶點擊一個單元格,我想將此文件複製到別的地方。

+0

也許我不是你的問題完全清楚,但爲什麼你認爲你必須知道在路徑的文件名和擴展名?你可以從原來傳入這個例程的'file'中選擇文件名+擴展名,並通過NSString的'lastPathComponent'方法插入新路徑來代替舊路徑(即保留文件名+擴展名)。 – 2011-12-27 00:59:57

+0

在旁邊注意什麼不移動文件而不是複製它?你真的需要這個文件的兩個物理副本嗎? – 2011-12-27 02:29:57

+0

@KendallHelmstetterGelner它用於將文件上傳到我的服務器。我希望這些文件具有特定的名稱(username_filename.fileextension)。我確信我可以在其他地方重命名它,但由於沒有任何PHP經驗,這對我來說是最簡單的。這些文件並不大,並且是暫時的,所以它現在可以工作。 – 2011-12-27 13:42:13

回答

3

由於附加的路徑組件也是一個字符串,你可以使用另一種創建文件名的另一個字符串,你不知道

NSString *anotherString=[NSString stringWithFormat:@"/temporary/%@",<yourfilenameAsString>]; 

,只是追加一條進入NEWPATH。

我也建議你不應該像@「/ temporary/filename.extension」那樣構建路徑。而是你構建它使用的NSString的道路施工方法,如

- (NSString *)stringByAppendingPathComponent:(NSString *)aString 
- (NSString *)stringByAppendingPathExtension:(NSString *)ext 
+1

另請注意,您不應該寫入設備的根目錄('/'),而應該寫入用戶的文檔目錄。 – 2011-12-27 01:15:04

相關問題