简单的写入文件对我不起作用

时间:2011-09-26 23:40:00

标签: objective-c cocoa file-io nsstring

我无法将这个简单的字符串写入文件。 请看我的代码。这是一个简单的笔尖,带有NSTextField和一个按钮。日志显示我得到的字符串值很好,但它没有写。

//Quick.h

#import <Foundation/Foundation.h>

@interface Quick : NSObject
{
    IBOutlet NSTextField * aString;
}

-(IBAction)wButton:(id)sender;

@end

//Quick.m

#import "Quick.h"

@implementation Quick

- (id)init
{
    self = [super init];
    if (self) {
        // Initialization code here.
    }

    return self;
}

-(IBAction)wButton:(id)sender{

    NSString * zStr = [aString stringValue];
    NSString * path = @"data.txt";
    NSLog(@"test String %@", zStr);
    [zStr writeToFile:path 
           atomically:YES 
             encoding:NSASCIIStringEncoding 
                error:nil]; 

}


@end

2 个答案:

答案 0 :(得分:3)

您必须提供最可能是Documents目录的完整文件路径,而不仅仅是文件名。

NSString *zStr = [aString stringValue];
NSArray  *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *directory = [paths objectAtIndex:0];
NSString *fileName = @"data.txt";
NSString *filePath = [directory stringByAppendingPathComponent:fileName];
[zStr writeToFile:filePath atomically:YES encoding:NSASCIIStringEncoding error:nil]; 

答案 1 :(得分:2)

您需要提供绝对路径。

来自another answer的此代码为您提供了应用文档目录的路径:

 [NSHomeDirectory() stringByAppendingPathComponent:@"Documents"];