我有videourl,并希望使用此URl从iPhone中删除它

我创build了一个存储video的应用,现在我想在用户单击删除button时删除该video。 我正在使用AVFoundation录制video。

我的应用程序相机给我一个这样的输出url:

 file://localhost/private/var/mobile/Applications/4B2E02E5-3EE2-493E-8ECF-4B1DA29B9387/tmp/output.mov 

我已经尝试过,但没有奏效:

 - (void) removeFile:(NSURL *)fileURL { NSString *filePath = [fileURL path]; NSFileManager *fileManager = [NSFileManager defaultManager]; if ([fileManager fileExistsAtPath:filePath]) { NSLog(@"here it is : %@",fileURL); NSError *error; // Attempt to delete the file at filePath2 if ([fileManager removeItemAtPath:filePath error:&error] != YES) NSLog(@"Unable to delete file: %@", [error localizedDescription]); // Show contents of Documents directory NSLog(@"Documents directory: %@", [fileManager contentsOfDirectoryAtPath:filePath error:&error]); } } 

编辑

  - (IBAction)videoWillDelete:(id)sender { NSString *strPath = [NSHomeDirectory() stringByAppendingPathComponent:@"output.mov"]; NSLog(@"file is:%@",strPath); if ([[NSFileManager defaultManager] isDeletableFileAtPath:strPath]==YES) { NSLog(@"file is deletebale"); }else { NSLog(@"file is not deletebale"); } NSError *error; if ([[NSFileManager defaultManager] isDeletableFileAtPath:strPath]) { BOOL success = [[NSFileManager defaultManager] removeItemAtPath:strPath error:&error]; if (!success) { NSLog(@"Error removing file at path: %@", error.localizedDescription); } } } 

我的日志文件有:

 2012-11-02 17:33:21.836 AVFoundationCam[1791:707] file is:/var/mobile/Applications/4B2E02E5-3EE2-493E-8ECF-4B1DA29B9387/output.mov 2012-11-02 17:33:21.838 AVFoundationCam[1791:707] file is not deletebale 

这个函数是我用来在iPhone中存储数据的:

 else { ALAssetsLibrary *library = [[ALAssetsLibrary alloc] init]; [library writeVideoAtPathToSavedPhotosAlbum:outputFileURL completionBlock:^(NSURL *assetURL, NSError *error) { if (error) { if ([[self delegate] respondsToSelector:@selector(captureManager:didFailWithError:)]) { [[self delegate] captureManager:self didFailWithError:error]; } } if ([[UIDevice currentDevice] isMultitaskingSupported]) { [[UIApplication sharedApplication] endBackgroundTask:[self backgroundRecordingID]]; } if ([[self delegate] respondsToSelector:@selector(captureManagerRecordingFinished:)]) { [[self delegate] captureManagerRecordingFinished:self]; } }]; //[library release]; } } 

你可以得到这样的Document Directory path

 NSString *strPath = [NSHomeDirectory() stringByAppendingPathComponent:@"Documents"]; 

现在删除这样的项目:

 NSError *error; if ([fileManager fileExistsAtPath:path]) { if ([[NSFileManager defaultManager] isDeletableFileAtPath:strPath]) { BOOL success = [[NSFileManager defaultManager] removeItemAtPath:strPath error:&error]; if (!success) { NSLog(@"Error removing file at path: %@", error.localizedDescription); } else { NSLog(@"File removed at path: %@", error.localizedDescription); } } else { NSLog(@"file not exists"); } 

检查[NSHomeDirectory() stringByAppendingPathComponent:@"tmp/output.mov"];[library writeVideoAtPathToSavedPhotosAlbum:outputFileURL completionBlock:^(NSURL *assetURL, NSError *error) {的outputFileURL相同

答案很简单,不能从文档目录中删除文件。 它的只读和可写。

您可以通过为tmp目录提供path来实现您的目的,然后为了保存目的将其从tmppath移至文档目录。 而已。