MacOS 和快速更改/设置文件创建日期
Posted
技术标签:
【中文标题】MacOS 和快速更改/设置文件创建日期【英文标题】:MacOS and swift change/set file creationDate 【发布时间】:2017-03-12 00:55:57 【问题描述】:macOS sierra、iMac、swift3
我正在尝试编写一个更改文件创建日期的程序。 我有很多扫描的照片和文档,我希望能够按字母或时间顺序存储。
我已经在 Objective-C 中实现了这一点,但我在 swift 中苦苦挣扎。 Apple API > Foundation > FileManager > setAttributes 实例方法应该可以解决我的问题。 实例方法-----setAttributes(:ofItemAtPath:) 声明 --- f**c setAttributes( attributes: [FileAttributeKey : Any], ofItemAtPath path: String) throws
我无法编写这行代码使其能够编译。
var isChangedBoolean = try fm.setAttributes(myAttributesDictionary: [FileAttributeKey : creationDate],ofItemAtPath : myPath)
############## 我的代码
let fm = FileManager()
let myPath = "/Users/jon/a-1.jpg" //original date 30/1/2013 = d/m/y
//Convert date string to date object
let myDateString = "24/11/2014" // required date
let dateFmt = DateFormatter()
//dateFmt.timeZone = NSTimeZone.default
dateFmt.dateFormat = "dd/MM/yyyy"
let myDateObject = dateFmt.date(from : myDateString)
print("myDateString :\(myDateString) myDateObj :\(myDateObject!)")
//declare Mutable Dictionary with key : creationDate and my value
var myAttributesDictionary = [FileAttributeKey : Date]()
myAttributesDictionary[FileAttributeKey.creationDate] = myDateObject
print("----------------- mtAttributesDictionary")
print(myAttributesDictionary)
print(myAttributesDictionary[FileAttributeKey.creationDate]!) // works
print("### Will print myAttributesDictionary and a value for the key") // works
do
let fileAttributes = try fm.attributesOfItem(atPath : myPath) //works
//print(fileAttributes)
print("### Will print File Attributes")
catch let error as NSError
print("ERROR READ Attributes: \(error)")
do
print("### Will print my creationDateObject :: \(myAttributesDictionary[FileAttributeKey.creationDate]!)")
// This line is my problem. I cannot write a line of code that will compile
// var isChangedBoolean = try fm.setAttributes(myAttributesDictionary: [FileAttributeKey : creationDate],ofItemAtPath : myPath)
catch let error as NSError
print("ERROR ERROR in setAttributes: \(error)")
输出 ----- 我的日期字符串:24/11/2014 我的日期对象:2014-11-23 13:00:00 +0000 我的属性字典 [__C.FileAttributeKey(_rawValue: NSFileCreationDate): 2014-11-23 13:00:00 +0000] 2014-11-23 13:00:00 +0000 ### 将打印 myAttributesDictionary 和键的值 ### 将打印文件属性 ### 将打印我的 creationDateObject :: 2014-11-23 13:00:00 +0000
如果有问题的代码行未注释,它将无法编译。我已经写了至少 50 次,并且有许多不同类型的编译器错误。我只是不明白 API 需要什么,也找不到工作示例。 任何建议将不胜感激。一个解决方案将更加感激。 谢谢。
【问题讨论】:
【参考方案1】:我是不是把事情弄复杂了。
let mypath = "/path/to/file"
let myDateObject = NSDate() // NSDate() is todays date
let attributes = [FileAttributeKey.creationDate: myDateObject]
do
try FileManager.default.setAttributes(attributes, ofItemAtPath: myPath)
catch
print(error)
【讨论】:
以上是关于MacOS 和快速更改/设置文件创建日期的主要内容,如果未能解决你的问题,请参考以下文章