忍者ブログ
  • 2024.04
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 2024.06
[PR]
×

[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。

【2024/05/19 10:38 】 |
ファイルの読み書き
ファイルへの読み書きの方法はいくつかあります。
ここには、一番簡単な方法を書きます。

//書き込み
bool saveData(void *pData, uint32_t lenData, const char *fileName)
{
//正確なファイルパスを作成
NSString* filePath = [NSHomeDirectory() stringByAppendingPathComponent:[NSString stringWithFormat:@"Documents/%s", fileName]];

//書き込むバイト列をNSData型(またはNSMutableData)に変換
NSData *data = [NSData dataWithBytes:pData length:lenData];

//NSDataをファイル書き込み
BOOL ret = [data writeToFile:filePath atomically:YES]; //引数については後述

return ret;
}


//読み込み
const void *loadData(const char *fileName)
{
//正確なファイルパスを作成
NSString* filePath = [NSHomeDirectory() stringByAppendingPathComponent:[NSString stringWithFormat:@"Documents/%s", fileName]];

//ファイルマネージャの取得
NSFileManager *fileManager = [NSFileManager defaultManager];

//ファイルが存在するか確認
if ([fileManager fileExistsAtPath:filePath]) {

//ファイルが存在するなら、その中身をNSData型で取得
NSData *loadedData = [NSData dataWithContentsOfFile:filePath];

//NSDataから生のバイト列に戻す。ここが忘れがちなので注意
const void *bytes = [loadedData bytes];

return bytes;
}
return NULL;
}
 
○保存する場所は?
ファイルを保存する場所は、ホームディレクトリのDocumentsフォルダの中が一般的。

ホームディレクトリというのは、アプリケーションごとにそれぞれ決まっている。
ここがiOSの特徴で、アプリは基本的に自分のホームディレクトリ以下しか触れないようになっている。
こうすることで、アプリケーションとデータがひとまとまりになるという利点がある。だからファイラが必要ない。

ホームディレクトリはNSHomeDirectory()で取得できる。
Mac上ではたとえばこんな場所。
/Users/xxxx/Library/Application Support/iPhone Simulator/4.2/Applications/XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX
xxxxはユーザ名、XXXXXXX...はアプリケーションの識別名。

iPhoneやiPad実機上ではたとえばこんな場所。
/var/mobile/Applications/XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX
XXXXXXXX...はアプリケーションの識別名。

Macのほうなら、ためしに
NSLog(@"%@", NSHomeDirectory);
で出力したパスをたどってみると、よくわかります。

ちなみに、アプリケーション識別名は、同じアプリだからといって、Mac、iPhone、iPad皆同じになる訳ではありません。


○書き込み時のメソッドの引数
[data writeToFile:filePath atomically:YES];
atomically をYESにすると、まずバックアップファイルに書きこみを行うようになります。安全。
 
PR
【2011/01/06 01:09 】 | iPhone | 有り難いご意見(0) | トラックバック()
<<入力処理:ボタンの扱い | ホーム | OpenGLESの注意点>>
有り難いご意見
貴重なご意見の投稿














虎カムバック
トラックバックURL

<<前ページ | ホーム | 次ページ>>