如何在 OSX 上使用 Swift "touch" 文件
How to "touch" a file using Swift on OSX
我想使用类似于命令行的本机命令使用 Swift 触摸文件夹:
触摸myfile.txt
最好的方法是什么?
我可以创建文件夹 OK。我的问题是如何在不影响文件夹内容的情况下触摸文件夹(即更新其修改日期)。
我正在探索是否有 API 可以做到这一点。我希望您可以调用 CLI 命令来执行此操作。我的研究还没有找到满意的答案。
无需调用 CLI 命令,您可以使用 NSFileManager
执行此操作。
首先,让我们看一下文件(或文件夹)的属性:
let manager = NSFileManager()
do {
let attr = try manager.attributesOfItemAtPath(yourFilePath)
print(attr)
} catch let error as NSError {
print(error)
}
你用 .attributesOfItemAtPath
得到的是一个包含所有 file/folder 属性的 NSDictionary,包括修改日期。
您可以设置这些属性.setAttributes
,这里是您将修改日期设置为当前日期的示例:
let newAttributes = [NSFileModificationDate: NSDate()]
do {
try manager.setAttributes(newAttributes, ofItemAtPath: yourFilePath)
} catch let error as NSError {
print(error)
}
或者您可以使用 URL
class:
var resourceValues = URLResourceValues()
resourceValues.contentModificationDate = Date()
try? url.setResourceValues(resourceValues)
注意 url
必须是 var
因为它应该被这个修改。
我想使用类似于命令行的本机命令使用 Swift 触摸文件夹:
触摸myfile.txt
最好的方法是什么?
我可以创建文件夹 OK。我的问题是如何在不影响文件夹内容的情况下触摸文件夹(即更新其修改日期)。
我正在探索是否有 API 可以做到这一点。我希望您可以调用 CLI 命令来执行此操作。我的研究还没有找到满意的答案。
无需调用 CLI 命令,您可以使用 NSFileManager
执行此操作。
首先,让我们看一下文件(或文件夹)的属性:
let manager = NSFileManager()
do {
let attr = try manager.attributesOfItemAtPath(yourFilePath)
print(attr)
} catch let error as NSError {
print(error)
}
你用 .attributesOfItemAtPath
得到的是一个包含所有 file/folder 属性的 NSDictionary,包括修改日期。
您可以设置这些属性.setAttributes
,这里是您将修改日期设置为当前日期的示例:
let newAttributes = [NSFileModificationDate: NSDate()]
do {
try manager.setAttributes(newAttributes, ofItemAtPath: yourFilePath)
} catch let error as NSError {
print(error)
}
或者您可以使用 URL
class:
var resourceValues = URLResourceValues()
resourceValues.contentModificationDate = Date()
try? url.setResourceValues(resourceValues)
注意 url
必须是 var
因为它应该被这个修改。