ファイルのパスの取得方法

NSString* a_home_dir = NSHomeDirectory();
NSString* a_doc_dir = [a_home_dir stringByAppendingPathComponent:@"Documents"];
NSString* a_file_path = [a_doc_dir stringByAppendingPathComponent:@"doc-image.jpg"];

ファイルの書き込み

NSData* a_data;
... // a_data に値を設定するコード
NSString* a_home_dir = NSHomeDirectory();
NSString* a_doc_dir = [a_home_dir stringByAppendingPathComponent:@"Documents"];
NSFileManager* a_file_mgr = [NSFileManager defaultManager];
[a_file_mgr changeCurrentDirectoryPath:a_doc_dir];
// ファイルが存在しなければ作成する
if( [a_file_mgr fileExistsAtPath:@"image.jpg" isDirectory:&a_isDir] == NO ){
[a_file_mgr createFileAtPath:@"image.jpg" contents:a_data attributes:nil];
}else{
// 存在していれば上書き
NSFileHandle* a_file = [NSFileHandle fileHandleForWritingAtPath:a_file_path];
[a_file writeData:a_data];
}

ディレクトリの作成

BOOL a_isDir = NO;
if( [a_file_mgr fileExistsAtPath:@"images" isDirectory:&a_isDir] == NO){
[a_file_mgr createDirectoryAtPath:@"images" attributes:nil];
}

ファイルの読み込み

NSString* filePath = [NSHomeDirectory() stringByAppendingPathComponent:@"Documents/data.bin"];
NSFileHandle* file = [NSFileHandle fileHandleForReadingAtPath:filePath];
if(file){
NSData* data = [file readDataToEndOfFile];
[file closeFile];
}

ファイルの削除

NSError* error;
[[NSFileManager defaultManager] removeItemAtPath:path error:&error];

テキストファイルの書き込み

// ホームディレクトリを取得 NSString *homeDir = NSHomeDirectory();
// 書き込みたいファイルのパスを作成
NSString* a_doc_dir = [homeDir stringByAppendingPathComponent:@"Documents"];
NSString *filePath = [a_doc_dir stringByAppendingPathComponent:@"sample.txt"];
// ファイルマネージャを作成
NSFileManager *fileManager = [NSFileManager defaultManager];
// 注意.
// ファイルに書き込もうとしたときに該当のファイルが存在しないとエラーになるため
// ファイルが存在しない場合は空のファイルを作成する
// ファイルが存在しないか?
if (![fileManager fileExistsAtPath:filePath]) { // yes
// 空のファイルを作成する
BOOL result = [fileManager createFileAtPath:filePath
contents:[NSData data] attributes:nil];
if (!result) {
NSLog(@"ファイルの作成に失敗");
return;
}
}
// ファイルハンドルを作成する
NSFileHandle *fileHandle = [NSFileHandle fileHandleForWritingAtPath:filePath];
if (!fileHandle) {
NSLog(@"ファイルハンドルの作成に失敗");
return;
}
// ファイルに書き込むデータ1を作成
NSString *writeLine1 = @"Snoopy\n";
NSData *data1 = [NSData dataWithBytes:writeLine1.UTF8String
length:writeLine1.length];
// ファイルに書き込む
[fileHandle writeData:data1];
// ファイルに書き込むデータ2を作成
NSString *writeLine2 = @"チャーリーブラウン\n";
NSData *data2 = [NSData dataWithBytes:writeLine2.UTF8String
length:[writeLine2 lengthOfBytesUsingEncoding:NSUTF8StringEncoding]];
[fileHandle writeData:data2];
// 効率化のためにすぐにファイルに書き込まれずキャッシュされることがある.
// 「synchronizeFile」メソッドを使用することで
// キャッシュされた情報を即座に書き込むことが可能.
[fileHandle synchronizeFile];
// ファイルを閉じる
[fileHandle closeFile];
NSLog(@"ファイルの書き込みが完了しました.");

過去のリンク