0

各行ごとに異なるタグ名でタグを出力し、それぞれをファイルに保存したい。ファイルは書き込めるのですが、書き過ぎです。すべての行を別のファイルに書き込むにはどうすればよいですか?

入力:

イギリスのタイタニック
・レオドラジカプロ・ケイト

ドイツ ホテル ヒュッセサン
トムハンクス アンジェリナ

出力:

<language>english<language/>
<movie>titanic<movie/>
<Actor>leondradiacpro<Actor/>
<Actress>kate<Actress/>

<language>German<language/>
...

コード:

   for (NSString *str in lineFile)

                {

                    if([str hasPrefix:@"english "])  
                    {

                        NSMutableArray *dd = [[NSMutableArray alloc] initWithArray:[[str stringByReplacingOccurrencesOfString:@"english" withString:@""] componentsSeparatedByString:@" "]];

                    NSArray *tag = [NSArray aarrayWithObjects:@"er",@"langauge",@"movie",@"actor",@"kate",nil];

                    NSMutableString *output =[[NSMutableString alloc] init];
                    NSUInteger tagindex =0;

                    for (NSString *words in word)

                    {
                        if(tagindex >=[tag count])
                        {

                            NSLog(@"dad");
                            break;
                    }
                        [output appendFormat:@"<%@>%@<%@>\n", [tag objectAtIndex:tagindex],words,[tag objectAtIndex:tagindex]];
                        NSLog(@"%@",output);
 [output writeToFile:@"/Users/xx/Desktop/homework.txt" atomically:YES encoding:NSASCIIStringEncoding error:NULL];    
                        tagindex++;

これで、言語と映画 (1 行目) のみを読み取ることができるようになりました。2 行目とタグも追加する方法

4

1 に答える 1

0

cメソッドでファイルを書き込む必要がある場合は、次の方法が役立つかもしれません

-(void)writeToFile:(NSString *)str:(NSString *) fileName
{
    NSData* data = [str dataUsingEncoding:NSUTF8StringEncoding];
    NSString *filePath=[NSString stringWithFormat:@"%@",fileName];
    if([[NSFileManager defaultManager] fileExistsAtPath:filePath] == NO){
        NSLog(@"file not exist,create it...");
        [[NSFileManager defaultManager] createFileAtPath:filePath contents:nil attributes:nil];
    }else {
                NSLog(@"file exist!!!");
    }

    FILE *file = fopen([filePath UTF8String], [@"ab+" UTF8String]);

    if(file != NULL){
        fseek(file, 0, SEEK_END);
    }
    int readSize = [data length];
    fwrite((const void *)[data bytes], readSize, 1, file);
    fclose(file);
}
于 2013-01-16T13:31:01.177 に答える