如何检测iOS中是不是存在大文件?

Posted

技术标签:

【中文标题】如何检测iOS中是不是存在大文件?【英文标题】:how to detect existence of large file in iOS?如何检测iOS中是否存在大文件? 【发布时间】:2012-05-24 11:03:23 【问题描述】:

在运行时,我的应用会下载一些大型视频文件并播放它们。它们很大,所以我认为它们可能会在任何时候被系统试图恢复内存时擦除。

我在使用 [fileManager fileExistsAtPath: pathOfVideo] 时遇到问题:

然后我发现一个answer 说我们应该使用-fileExistsAtPath 来确定文件是否存在。

建议的解决方案是打开文件并查看它是否在打开时失败。即使是 30MB 的文件?我不太担心这里的比赛条件;文件从服务器下载并在 MediaPlayer 中播放。我是否仍应打开 30MB 文件以查看它是否存在而不是使用 fileExistsAtPath?

【问题讨论】:

(为了记录,我的问题是目录权限,但关于大文件检测的问题仍然可以回答..) 【参考方案1】:

也许这会对你有所帮助

NSDictionary *fileAttributes = [fileManager fileAttributesAtPath:filePath traverseLink:YES];
    if(fileAttributes != nil)
    
        NSString *fileSize = [fileAttributes objectForKey:NSFileSize];
    enter code here

        NSLog(@"File size: %@ kb", fileSize);
    

【讨论】:

可能很好,但 xcode 说 'fileAttributesAtPath:traverseLink:' 已弃用 查看developer.apple.com/library/ios/#DOCUMENTATION/Cocoa/Reference/…: 按照文档的建议尝试attributesOfItemAtPath:error:【参考方案2】:

如果不考虑竞争条件,请使用 fileExistsAtPath。 iOS 设备上的权限问题是什么?

【讨论】:

~/Library/Application Support/iPhone Simulator/5.0 是 700,所以我将其更改为 755 以匹配其余的父母和孩子。【参考方案3】:

如果您点击链接讨论为什么不建议使用fileExistsAtPath(请参阅Race Conditions and Secure File Operations),考虑到 iPhone 应用程序的沙盒,这可能是可以接受的风险。

【讨论】:

以上是关于如何检测iOS中是不是存在大文件?的主要内容,如果未能解决你的问题,请参考以下文章

asp.net(c#)如何上传大文件?

git commit 错误:检测到大文件

如何检测项目文件夹中是不是存在文件?

python检测文件中的文件是不是正在被占用

VC++如何检测文件是不是存在

c#中如何检测文件路径是不是存在