将NSData写入文件的最简单方法

pap*_*apr 64 file-io cocoa file save

NSData *data;
data = [self fillInSomeStrangeBytes];
Run Code Online (Sandbox Code Playgroud)

我现在的问题是如何data以最简单的方式写入文件.

(我已经是NSURL了file://localhost/Users/Coding/Library/Application%20Support/App/file.strangebytes)

Ale*_*lex 98

NSData有一个名为的方法writeToURL:atomically:完全符合您的要求.查看文档NSData以了解如何使用它.


Tom*_*sel 33

请注意,写入NSData文件是一个IO操作,可能会阻塞主线程.特别是如果数据对象很大.

因此建议在后台线程上执行此操作,最简单的方法是使用GCD,如下所示:

// Use GCD's background queue
dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_BACKGROUND, 0), ^{
    // Generate the file path
    NSArray *paths = NSSearchPathForDirectoriesInDomains(NSCachesDirectory, NSUserDomainMask, YES);
    NSString *documentsDirectory = [paths objectAtIndex:0];
    NSString *dataPath = [documentsDirectory stringByAppendingPathComponent:@"yourfilename.dat"];

     // Save it into file system
    [data writeToFile:dataPath atomically:YES];
});
Run Code Online (Sandbox Code Playgroud)


Bri*_*ell 30

writeToURL:atomically:writeToFile:atomically:如果你有一个文件名而不是一个URL.

  • 我认为writeToURL与writeToFile之间没有区别.根据文档:"因为目前只支持file:// URL,所以此方法与writeToFile:atomically:之间没有区别,除了第一个参数的类型" (9认同)
  • NSURL为+1.当您指向文件时,NSURL会显示NSString.Apple总是建议NSURL用于文件路径而不是NSString.:) (2认同)