从文件路径获取数据时崩溃

Posted

技术标签:

【中文标题】从文件路径获取数据时崩溃【英文标题】:Crashes while fetching data from filepath 【发布时间】:2012-06-13 13:47:44 【问题描述】:

应用程序在尝试仅针对大文件 (>100 MB) 从路径/URL(存储在文档文件夹中的视频文件)获取数据时崩溃。

设备详情:ios (4.3)、iPad 1

    网址完美(已检查日志) 文件存在于该路径(检查路径)

注意:仅在设备上崩溃。

以下是应用崩溃的代码:

NSArray *paths = NSSearchPathForDirectoriesInDomains(NSLibraryDirectory, NSUserDomainMask, YES);

if ([paths count] > 0) 
    
         filePath = [paths objectAtIndex:0];
         filePath = [filePath stringByAppendingPathComponent:@"Private Documents"];
         filePath = [filePath stringByAppendingPathComponent:@"videos"];
         filePath = [filePath stringByAppendingPathComponent:[NSString stringWithFormat:@"%@.mp4",st]];
    

NSURL *fileUrl=[NSURL fileURLWithPath:filePath];
NSMutableData *Data = [NSMutableData dataWithContentsOfURL:fileUrl];  //CRASHES ON THIS LINE
NSLog(@"Data: %d",[Data length]);

任何cmets。

【问题讨论】:

你能告诉我fileURL的声明吗 感谢詹姆斯的关心。我用更多代码编辑问题。 最重要的是:崩溃说明了什么? 当我在后台执行此操作时,我 rcv: ,收到内存警告。 Level=1 ,收到内存警告。 Level=2 然后崩溃 回答:***.com/questions/11032027/… 【参考方案1】:

您似乎内存不足。

在设备上,您的模拟器可用的内存通常要少得多,并且 100MB 可以存储在 RAM 中。考虑将可下载的文件分成更小的块,如果可以的话,分块处理。

我不认为

你花了很长时间,应用程序被杀死。

正如大卫建议的那样,除非你在启动时这样做。

【讨论】:

也许你是对的,但我需要这样做,以下是步骤: 1. 从文件中读取数据 //Crashing 2. 传递数据来解密这个文件 3. 然后从解密创建 MP4 文件数据 4. 然后将 URL 传递给 MPMoviePlayerControll 播放 当我在后台执行此操作时,我 rcv: ,收到内存警告。 Level=1 ,收到内存警告。 Level=2 然后崩溃 这确认您的问题是内存问题,而不是挂起问题。 我检查了只调用从文件路径获取数据的方法,没有其他 UI 和所有。仍然 rcv 内存警告然后崩溃。 那么很简单,你不能。您想存储在内存中的信息量实在是太多了!

以上是关于从文件路径获取数据时崩溃的主要内容,如果未能解决你的问题,请参考以下文章

使用无效 URL 调用 addPersistentStoreWithType 时崩溃 - 路径中的文件似乎不是 SQLite 数据库

从 NSItemProvider 获取文件名/路径

Gatsby 从数据中获取具有相对路径的图像文件夹

如何使用Argument将路径文件作为输入数据获取到PowerShell中的其他脚本?

将content:// uri转换为文件路径

如何在 iPhone 中快速从文件路径 url 获取视频或图像?