iOS - 写入(或读取)文件失败

时间:2014-02-25 14:37:33

标签: ios nsdata writetofile

这是我的代码:

-(NSArray *)getSpecialArray:(NSString *)day{
    NSString *stringURL = [NSString stringWithFormat:@"%@/%@%@", @"http://www.myDomain.com/", day, @".txt"];;
    stringURL = [stringURL stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
    NSURL *url = [NSURL URLWithString:stringURL];
    NSData *urlData = [NSData dataWithContentsOfURL:url];
    NSString *filePath;

    if ( urlData )
    {
        NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
        NSString *documentsDirectory = [paths objectAtIndex:0];

        filePath = [NSString stringWithFormat:@"%@/Area/%@%@", documentsDirectory, day, @".txt"];
        [urlData writeToFile:filePath atomically:YES];
    }

    NSString *content = [NSString stringWithContentsOfFile:filePath encoding:NSUTF8StringEncoding error:NULL];

    if(content == nil){
        content = [[NSString alloc] initWithData:urlData encoding:NSUTF8StringEncoding];
    }

    content = [content stringByReplacingOccurrencesOfString:@"Main Menu\n" withString:@""];

    splitData = [content componentsSeparatedByCharactersInSet:[NSCharacterSet characterSetWithCharactersInString:@"\n\n"]];


    return splitData;
}

似乎正在发生的事情是写入文件部分无法正常工作。内容似乎总是在那条线上== nil。它也可能是写得很好而且不管出于什么原因它都不能很好地读取文件,尽管我倾向于前一种选择。有人看到这个代码有任何问题吗?假设这是第一次运行此代码,并且正在写入的文件夹和文件不存在。在切换到Mountain Lion并升级Xcode之后,似乎就出现了这个问题。

2 个答案:

答案 0 :(得分:0)

问题在于创建URL。

NSString *stringURL = [NSString stringWithFormat:@"%@/%@%@", @"http://www.myDomain.com/", day, @".txt"];

您在格式化程序中附加"/"以及URL值。 因此,您的最终网址将变为http://www.myDomain.com//filename.txt。这是一个无效的网址。

通过从任何一个地方移除"/"来纠正它。

NSString *stringURL = [NSString stringWithFormat:@"%@%@%@", @"http://www.myDomain.com/", day, @".txt"];

答案 1 :(得分:0)

首先,检查您的文件是否实际在文件系统上创建和/或检查[urlData writeToFile:filePath atomically:YES];调用的返回值。

如果文件存在且方法返回YES,则问题出在读取数据中。将NSError**传递给stringWithContentsOfFile: encoding: error:并进行检查。另外,不要将NULL用于对象,而是使用nil