2011-12-27 142 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

相关问题