iPhone でファイルの追記と上書き

Perl でいうところの ">" や ">>" っぽくファイルの入出力をする方法はないかといじくり回した結果、正攻法か分かりませんが、とりあえず目的は達成できたのでメモ。

既存ファイルへの追記

1
2
3
4
5
6
7
8
9
10
NSString *path = @"hoge.txt";
 
NSFileHandle *fh = [NSFileHandle fileHandleForWritingAtPath:path];
[fh seekToEndOfFile];
for (int i = 0; i < 10; i++) {
    NSString *str = [NSString stringWithFormat:@"test%d\n", i];
    NSData *data = [str dataUsingEncoding:NSUTF8StringEncoding];
    [fh writeData:data];
}
[fh closeFile];

上書き

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
NSString *path = @"hoge.txt";
 
NSFileManager *manager = [NSFileManager defaultManager];
if ([manager fileExistsAtPath:path]){
    NSError *error = nil;
    [manager removeItemAtPath:path error:&error];
}
[manager createFileAtPath:path contents:[NSData data] attributes:nil];
 
NSFileHandle *fh = [NSFileHandle fileHandleForWritingAtPath:path];
for (int i = 0; i < 10; i++) {
    NSString *str = [NSString stringWithFormat:@"test%d\n", i];
    NSData *data = [str dataUsingEncoding:NSUTF8StringEncoding];
    [fh writeData:data];
}
[fh closeFile];

別のより良い方法を見つけたら追記します。

このエントリーのトラックバックURL
http://www.deftrash.com/admin/mt4/mt-tb.cgi/532