如何在OSX上使用Swift“触摸”文件

时间:2016-01-16 12:27:37

标签: swift macos file cocoa command

我想使用类似于命令行的本机命令使用Swift来触摸文件夹:

触摸myfile.txt

这样做的最佳方式是什么?

我可以创建文件夹OK。我的问题是如何触摸文件夹(即更新其修改日期)而不影响文件夹内容。

我正在探索是否有API来执行此操作。我希望您可以调用CLI命令来执行此操作。我的研究没有得到满意的答案。

2 个答案:

答案 0 :(得分:3)

无需调用CLI命令,您可以使用NSFileManager执行此操作。

首先,让我们看一下文件(或文件夹)的属性

let manager = NSFileManager()

do {
    let attr = try manager.attributesOfItemAtPath(yourFilePath)
    print(attr)
} catch let error as NSError {
    print(error)
}

使用.attributesOfItemAtPath获得的是包含所有文件/文件夹属性的NSDictionary,包括修改日期。

您可以使用.setAttributes 设置这些属性,以下是将修改日期设置为当前日期的示例:

let newAttributes = [NSFileModificationDate: NSDate()]

do {
    try manager.setAttributes(newAttributes, ofItemAtPath: yourFilePath)
} catch let error as NSError {
    print(error)
}

答案 1 :(得分:0)

或者,您可以使用URL类:

var resourceValues = URLResourceValues()
resourceValues.contentModificationDate = Date()
try? url.setResourceValues(resourceValues)

注意url必须是var,因为据推测它已被修改。