40

ファイルの作成日(変更日ではない)を見つけようとしています。

変更日はありますが、作成日はファイルの属性に含まれていないようです。

私はこのコードを使用しています。

NSFileManager* fm = [NSFileManager defaultManager];

NSString* path = [PathHelpers pathInDocumentsFolderWithFilename:FILE_NAME];
NSDictionary* attrs = [fm attributesOfItemAtPath:path error:nil];

if (attrs != nil) {
    return (NSDate*)[attrs objectForKey: NSFileCreationDate];
} else {
    return nil;
}

これは常にnilを返します。デバッガーに「poattrs」と入力して、NSDictionaryのキーと値のペアのリストを取得すると、次のようになります。

NSFileGroupOwnerAccountID = 20;
NSFileGroupOwnerAccountName=スタッフ;
NSFileModificationDate = 2010-01-21 11:47:55 +0000;
NSFileOwnerAccountID = 501;
NSFileOwnerAccountName = ben;
NSFilePosixPermissions = 420;
NSFileReferenceCount = 1;
NSFileSize = 338;
NSFileSystemFileNumber = 2234;
NSFileSystemNumber = 42553324;
NSFileType = NSFileTypeRegular;

作成日なし..bah..

作成日を取得する別の方法を知っている人はいますか、それともiOSには存在しませんか?

4

10 に答える 10

72

このコードは、実際に適切な作成日を返します。

NSFileManager* fm = [NSFileManager defaultManager];
NSDictionary* attrs = [fm attributesOfItemAtPath:path error:nil];

if (attrs != nil) {
    NSDate *date = (NSDate*)[attrs objectForKey: NSFileCreationDate];
    NSLog(@"Date Created: %@", [date description]);
} 
else {
    NSLog(@"Not found");
}

アプリ内でファイルを作成していますか? 多分そこが問題です。

于 2011-06-21T16:28:24.510 に答える
21

fileCreationDateには、そのための特別なメッセージがありますNSDictionary。以下は私にとってはうまくいきます:

目的 C:

NSDate *date = [attrs fileCreationDate];

迅速:

let attrs = try NSFileManager.defaultManager().attributesOfItemAtPath(path) as NSDictionary
attrs.fileCreationDate()
于 2011-11-03T09:26:16.470 に答える
6

Swift 5 では:

let date = (try? FileManager.default.attributesOfItem(atPath: path))?[.creationDate] as? Date
于 2019-10-19T02:48:38.440 に答える
2

Swift 3 のバージョン コード:

do {
        let fileAttributes = try FileManager.default.attributesOfItem(atPath: yourPathString)
        let modificationDate = fileAttributes[FileAttributeKey.modificationDate] as! Date
        print("Modification date: ", modificationDate)
    } catch let error {
        print("Error getting file modification attribute date: \(error.localizedDescription)")
    }
于 2017-02-14T19:06:25.453 に答える
1

fstat64返された構造体のメンバーを取得するために使用できますst_birthtimespecか?ファイルのCファイルハンドルを作成し、timespec値をに変換する必要がありますNSDateが、それは何もないよりはましです。

于 2010-01-21T12:43:17.977 に答える