酢ろぐ!

カレーが嫌いなスマートフォンアプリプログラマのブログ。

iOSでNSMutableDataを使ってテキストをDocumentディレクトリへ保存する

本記事は「NSMutableDataを使ってテキストをDocumentディレクトリへ保存する - iOSアプリ開発の逆引き辞典」に転記しました。

Documentディレクトリのパスを取得する

Documentディレクトリのパスは、NSSearchPathForDirectoriesInDomains関数にNSDocumentDirectoryを指定すると取得する事が出来ます。

NSArray* paths = NSSearchPathForDirectoriesInDomains(
	NSDocumentDirectory, NSUserDomainMask, YES);
NSString* docDir = [paths objectAtIndex:0];

Document配下にディレクトリを作成する

Documentディレクトリ配下のcacheディレクトリにファイルを配置したい場合は、ディレクトリが存在しない可能性があります。ディレクトリが存在するのかどうかを確認して、存在しなかった場合ディレクトリを作成します。

NSString* dirPath = [NSString stringWithFormat:@"%@/cache", docDir];
NSFileManager* fileManager = [NSFileManager defaultManager];
// ディレクトリが存在するか確認する
if (![fileManager fileExistsAtPath:dirPath])
{
	// 存在しなければ、ディレクトリを作成する
	[fileManager createDirectoryAtPath:dirPath 
		   withIntermediateDirectories:YES 
			attributes:nil error:nil];
	}
}

これで書き込む為の準備ができました。

データを書き込む

「ほげ」と「ぴよ」を用意します。テキストからバイト列を作成して、NSMutableDataオブジェクトにappendDataメソッドを使ってデータの末尾に追加していきます。

// 書き込みたい文字列を用意しておきます(適当にほげとぴよを用意)
NSString* hoge = @"ほげ";
NSString* piyo = @"ぴよ";
	
// テキストからバイト列を作成する 
NSData* dataHoge = [hoge dataUsingEncoding:NSUTF8StringEncoding];
NSData* dataPiyo = [piyo dataUsingEncoding:NSUTF8StringEncoding];
	
// 保存するデータを用意する
NSMutableData* data = [NSMutableData data];
[data appendData:dataHoge];
[data appendData:dataPiyo];
	
// データの書き込み
NSString* filePath = [NSString stringWithFormat:@"%@/hogehoge.txt", dirPath];
[data writeToFile:filePath atomically:YES];

これでテキストをDocumentディレクトリへ保存することが出来ました。