iOS:如何防止临时文件可见性

Posted

技术标签:

【中文标题】iOS:如何防止临时文件可见性【英文标题】:iOS: How do i prevent temporary files Visibility 【发布时间】:2013-03-21 03:58:05 【问题描述】:

我正在开发一个从静止图像生成临时视频的应用程序。但我不希望用户查看我生成的临时文件。但是当应用程序生成视频文件的那一刻,视频被相机胶卷列出。

我的问题是如何生成无法访问“相机胶卷、iTunes 和 iCloud”的临时媒体文件?

请帮助我。提前致谢。

代码:

[assetWriter finishWritingWithCompletionHandler:^
      
         NSURL *url = _outMovieURL; ALAssetsLibrary *library = [[ALAssetsLibrary alloc] init];
         [library writeVideoAtPathToSavedPhotosAlbum:url 
                                     completionBlock:^(NSURL *assetURL, NSError *error) 
                                      
                                         NSLog(@"Done!"); 
                                     ]; 
     ];

【问题讨论】:

你在写什么目录?如果你写到相机胶卷,那么它会在哪里。如果你写到一个临时目录,你就不会有这个问题。 NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES); NSString *documentsDirectory = [paths objectAtIndex:0]; NSString *path = [documentsDirectory stringByAppendingPathComponent:@"MyFirstDownloadmp4.mp4"]; 我正在使用上面的代码来创建网址 【参考方案1】:

这个块:

 [assetWriter finishWritingWithCompletionHandler:^
  
     NSURL *url = _outMovieURL; ALAssetsLibrary *library = [[ALAssetsLibrary alloc] init];
     [library writeVideoAtPathToSavedPhotosAlbum:url 
                                 completionBlock:^(NSURL *assetURL, NSError *error) 
                                  
                                     NSLog(@"Done!"); 
                                 ]; 
 ];

是在相机胶卷中写入文件。因此,在您只创建临时视频时不要使用它。将临时视频文件写入documentDirectory,(或者它可能已经在documentDirectory 中,当您创建它时,您需要做的就是不要使用此代码将该文件写入相机胶卷)。

【讨论】:

【参考方案2】:

您应该使用NSTemporaryDirectory() 并在末尾为任何临时文件附加您自己的词缀。该目录中的文件将由操作系统清理,或者您可以在完成后立即删除。

【讨论】:

path = [NSString stringWithFormat:@"%@/%llu.mov", NSTemporaryDirectory(), mach_absolute_time()];我已经尝试过了,但视频在相机胶卷中可见 @user1713827 这不太可能,您可以将代码发布到您实际使用生成的路径的位置吗?或者您是否安装了任何可能改变相机胶卷行为的越狱调整? [assetWriter finishWritingWithCompletionHandler:^ NSURL *url = _outMovieURL; ALAssetsLibrary *library = [[ALAssetsLibrary alloc] init]; [library writeVideoAtPathToSavedPhotosAlbum:url completionBlock:^(NSURL *assetURL, NSError *error) NSLog(@"Done!"); ]; ]; @user1713827 我假设您正在使用 _outMovieURL 初始化 AVAssetWriter 对吗?如果您不在完成块中使用 ALAssetsLibrary 调用,则相机胶卷中不会出现任何内容。或者您的问题是视频在您开始创作时出现,而不是在您全部完成之后?

以上是关于iOS:如何防止临时文件可见性的主要内容,如果未能解决你的问题,请参考以下文章

如何彻底删除IE临时文件!~请教高手

防止临时对象文件在 MSVC 中撞击磁盘

如何取消 AFdownloadrequest 操作而不保留以前的进度(删除临时文件) iOS

ios 如何从 plist 获取当前的临时配置文件名称(Dev、Dist、ETC)

退出 WinSCP 后保留临时文件

mysql之临时表