[NSData writeToFile]写到哪里?

时间:2012-10-11 01:22:18

标签: ios objective-c nsdata xcode4.5

我写了一个简单的程序来帮助我调试。

#import "UIImage+saveScreenShotOnDisk.h"

@implementation UIImage (saveScreenShotOnDisk)

-(void)saveScreenshot{
    NSData * data = UIImagePNGRepresentation(self);
    [data writeToFile:@"foo.png" atomically:YES];
}

@end

执行完毕后,我想知道foo.png的位置。

我去了

~Library/Application Support

我找不到foo.png。它在哪里?

如果我这样做

BOOL result = [data writeToFile:@"foo.png" atomically:YES];

结果将是NO,这有点奇怪,因为模拟器与iPhone不同,可以在任何地方书写。

5 个答案:

答案 0 :(得分:20)

您需要将NSData对象定向到您希望保存数据的路径:

NSString *docsDir;
NSArray *dirPaths;

dirPaths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
docsDir = [dirPaths objectAtIndex:0];
NSString *databasePath = [[NSString alloc] initWithString: [docsDir stringByAppendingPathComponent:@"foo.png"]];
[data writeToFile:databasePath atomically:YES];

这会将您的文件保存在设备(或模拟器)上的应用程序文件夹中。

答案 1 :(得分:5)

存储文件的默认位置是存储可执行文件的文件夹。

通过右键单击Products-> YourExecutable:

,查看存储可执行文件的位置

Screenshot - show in finder executable

然后在finder中打开。

此处pawel.plist资源通过

创建
NSArray *a = @[@"mybike", @"klapki", @"clapki", @"ah"];
[a writeToFile:@"pawel.plist" atomically:NO];

pawel.plist resource I done from code

答案 2 :(得分:2)

对于Swift,根据Shachar的回答:

let path = NSSearchPathForDirectoriesInDomains(.DocumentDirectory, .UserDomainMask, true)[0] + "/foo.png"
data?.writeToFile(path, atomically: true)

答案 3 :(得分:1)

你忘了提供你想写的位置或路径。检查这个 writeToFile:options:error:

将接收器中的字节写入给定路径指定的文件。

- (BOOL)writeToFile:(NSString *)path options:(NSDataWritingOptions)mask error:(NSError **)errorPtr

<强>参数

<强>路径

The location to which to write the receiver's bytes.

<强>掩模

A mask that specifies options for writing the data. Constant components are described in “NSDataWritingOptions”.

<强> errorPtr

If there is an error writing out the data, upon return contains an NSError object that describes the problem.

答案 4 :(得分:1)

您可以搜索“NSDocumentsDirectory”,我通常使用此方法搜索文档目录的路径,然后将我的文件名附加到其中。在方法writeToFile:中,提供了此附加路径。然后使用iTunes&gt;应用程序,滚动到底部,选择您的应用程序,您应该能够看到保存的文件。

PS:您应该在plist中设置一个valur,指定您的应用程序使用手机存储。