我有iOS应用程序。文档目录中有一些文件。我需要检查这些文件是否被编辑或替换。什么是正确的方法来做到这一点?我应该对文件进行散列还是上次编辑的时间(如何在iOS中获得这个时间),还是有更好的方法来实现它?检查文件是否更新
Q
检查文件是否更新
1
A
回答
4
您可以使用此代码来获取文件的修改日期:
NSFileManager* fileManager = [NSFileManager defaultManager];
NSDictionary* attributes = [fileManager attributesOfItemAtPath:path error:nil];
if (attributes != nil) {
NSDate *date = (NSDate*)[attributes objectForKey:NSFileModificationDate];
NSLog(@"Last modification date: %@", [date description]);
} else {
NSLog(@"Not found");
}
here你可以找到attributesOfItemAtPath:error:
函数的文档,以及here文件属性的列表,你可以得到
+0
谢谢你的解决方案! – 2013-03-03 19:52:27
1
散列整个文件都可以工作,但对于大多数用途来说有点矫枉过正。我想结合一些东西是快速访问:
- NSFileModificationDate
- NSFileSize
- NSFileCreationDate
- NSFileSystemFileNumber(inode编号)
如果您使用的是NSURL为主API(iOS 4.0+),我会用
- NSURLContentModificationDateKey(修改时间)
- NSURLFileSizeKey
- NSURLCreationDateKey
- NSURLFileAllocatedSizeKey
- NSURLAttributeModificationDateKey(
st_ctime
?)
我会至少使用修改时间和文件大小。其他的事情的东西,一般不会改变,除非内容的变化,有以下两点:
- NSFileSystemFileNumber(inode编号),如果用户从备份恢复可能会发生变化。
- NSURLAttributeModificationDateKey应该在属性更改时更改。如果它是
st_ctime
(我不完全确定它是),它几乎是保证捕获文件的所有更改,但也可能捕获许多不代表文件内容更改的更改。我不知道这些更改是否发生在外部(例如,iTunes/iCloud备份是否将属性设置为备份过程的一部分?)。
相关问题
- 1. 检查文件是否更新,然后是其他文件?
- 2. c linux检查文件是否更新/更改/修改?
- 3. 检查文件是否更改名称
- 4. Jenkins:检查一个文件是否被svn更新
- 5. 如何检查Android中的远程文件是否更新?
- 6. 检查服务器上的文件是否已更新
- 7. 检查一个文件是否已经更新
- 8. iOS下载前检查远程文件是否有更新
- 9. Dropbox API检查文件是否已更新
- 10. 如何检查是否有文件被更新或MongoDB中
- 11. 如何检查文件是否被更新
- 12. 检查文件是否
- 13. mysql更新查询检查数据是否更新或匹配
- 14. 检查更新推送是否成功
- 15. 检查RSS源是否有更新?
- 16. 检查更新是否成功
- 17. 检查Windows更新是否可用
- 18. 如何检查iOS是否有更新?
- 19. 检查SVN是否已更新C#
- 20. MongoDB shell:检查更新是否成功
- 21. 检查供稿是否有更新
- 22. 检查是否更新网页
- 23. 检查两列是否同时更新
- 24. 检查php mysql更新是否成功
- 25. 如何检查NSPasteboard是否已更新?
- 26. SQL检查更新前是否存在
- 27. PDO - 检查行是否已更新?
- 28. Android:检查更新是否可用
- 29. 崇高的文本2:检查文件是否是最新的或已更改
- 30. Python:检查新文件是否在文件夹中
你一定要检查它的更新时间。 继续保存更新的时间给一些plist并检查它。 – 2013-03-03 18:45:24
除了应用程序之外,谁还可以在运行时编辑/替换'Documents'目录中的文件...? – holex 2013-03-03 18:45:29
itunes同步,你可以添加一些文件到documets目录从itunes – 2013-03-03 18:47:26