人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

iPhoneで、アプリがローカルに保存したファイルの
タイムスタンプを取得するコードを教えてください。

●質問者: yellowberry
●カテゴリ:コンピュータ ゲーム
✍キーワード:iPhone アプリ コード タイムスタンプ ファイル
○ 状態 :終了
└ 回答数 : 2/2件

▽最新の回答へ

1 ● cockscomb
●35ポイント
NSString *filePath = @"path for the file";
NSError *error = nil;
NSDate *fileCreationDate;

NSFileManager *fileManager = [NSFileManager defaultManager];
NSDictionary *attributes = [fileManager attributesOfItemAtPath:filePath error:&error];
if (error != nil) {
 NSLog(@"Error : %@", [error localizedDescription]);
} else {
 fileCreationDate = [attributes objectForKey:NSFileCreationDate];
 NSLog(@"File creation date : &@", fileCreationDate);
}

http://developer.apple.com/iphone/library/documentation/Cocoa/Re...

テストしていないので細かな間違いなどあればすみません。

保存したファイルへのパスさえ分かっていれば、おおよそこのようなコードで得られるのではないかと思います。

もしファイルを保存したディレクトリまでは分かっていて、ファイルへのパスが分からないのであれば、 NSFileManager の -contentsOfDirectoryAtPath:error: メソッドを使うことになるでしょう。

◎質問者からの返答

ご回答ありがとうございます。

以下のようなコードで、ファイル書き込みに

成功したときにそのfilePathでNSLogしても

nullになってしまうようです。

できれば試していただけるとうれしいです(^^;

NSLog(@"%@", filePath);

if ([data writeToFile:filePath atomically:YES]) {

NSError *error = nil;

NSDate *fileCreationDate;

NSFileManager *fileManager = [NSFileManager defaultManager];

NSDictionary *attributes = [fileManager attributesOfItemAtPath:filePath error:&error];

if (error != nil) {

NSLog(@"Error : %@", [error localizedDescription]);

} else {

fileCreationDate = [attributes objectForKey:NSFileCreationDate];

// NSLog(@"File creation date : &@", fileCreationDate); // &@ ではなく %@ ?

NSLog(@"File creation date : %@", fileCreationDate);

}

}


2 ● cockscomb
●35ポイント ベストアンサー

ちょっと忙しくて再回答が遅れました。

申し訳ありません。

それと「&@」ではなくて「%@」ですね。

併せてお詫び致します。

さて、 -attributesOfItemAtPath:error のメソッドで返る NSDictionary を NSLog で出力したところ、 NSFileCreationDate のキーがありませんでした。

ドキュメントには書いてありますが、実際には存在しないために null が出力されているようです。

なぜこのようになるのかは分かりませんが、ざっと検索してみるとiPhoneではこうなっているようです。

http://stackoverflow.com/questions/1140696/cant-get-filecreation...

代替方法としては、 NSFileCreationDate の代わりに NSFileModificationDate のキーを使うことです。

ファイルを作成した日時ではなく、ファイルを最後に編集した日時を得ることになりますが、ローカルに保存したファイルのタイムスタンプを得るだけであれば特に問題はないと思われます。

◎質問者からの返答

NSFileModificationDateで取得できました。

年のためですが、参照のみではタイムスタンプも

変更されないようなので、完璧です!

ありがとうございました。

関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ