是否可以使用cocoa在mac中获取文件/文件夹最后访问日期?
struct stat output;
//int ret = stat([[[openPanel filenames] lastObject] UTF8String], &output);
int ret = stat([[[openPanel filenames] lastObject] fileSystemRepresentation], &output);
// error handling omitted for this example
struct timespec accessTime = output.st_atimespec;
NSDate *aDate = [NSDate dateWithTimeIntervalSince1970:accessTime.tv_sec];
NSLog(@"Access Time %d, %@",ret, aDate);
根据上面的代码我尝试了UTF8String和fileSystemRepresentation,但两者都给了我当前的日期和时间。如果我做错了,请告诉我。
答案 0 :(得分:11)
使用stat系统调用的C方式将在Objective-C中起作用。
e.g。
struct stat output;
int ret = stat(aFilePath, &output);
// error handling omitted for this example
struct timespec accessTime = output.st_atime;
您应该通过将-fileSystemRepresentation发送到包含路径的NSString来获取aFilePath。
另一种获得所需内容的方法是在指向所需文件的文件URL之前构建NSURL,并使用-resourceValuesForKeys:error:获取NSURLContentAccessDate资源值。
答案 1 :(得分:1)
并阅读:attributesOfItemAtPath:错误:
此致 弗里德里希
答案 2 :(得分:1)
使用NSMetadataQuery,您可以从代码中访问Spotlight元数据。聚光灯跟踪文件的最后使用日期属性,您可以使用此属性访问该属性:kMDItemLastUsedDate。
答案 3 :(得分:0)
#include <sys/stat.h>
-(NSDate *)getFileAccessLastDateOfFile:(NSString *)aFilePath{
struct stat output;
int ret = stat([aFilePath fileSystemRepresentation], &output);
struct timespec accessTime = output.st_atimespec;
NSDate *aDate = [NSDate dateWithTimeIntervalSince1970:accessTime.tv_sec];
return aDate;
}
答案 4 :(得分:0)
NSURL / URL的资源值可以提供以下信息:
let url: URL = ...
let values = try url.resourceValues(forKeys: [.contentAccessDateKey])
let accessed: Date? = values.contentAccessDate