保存文件但隐藏文件扩展名 - 带有键值编码的 Cocoa

Posted

技术标签:

【中文标题】保存文件但隐藏文件扩展名 - 带有键值编码的 Cocoa【英文标题】:Save file but hide file extension - Cocoa with Key Value Coding 【发布时间】:2016-07-19 08:55:00 【问题描述】:

我正在使用Key Value Coding 将一些对象保存到文件中。我希望隐藏已保存文件的扩展名(或至少隐藏,除非 Finder → 首选项 → 高级“显示所有文件扩展名”中的值为 true),但我似乎无法让它工作。

我正在像这样保存文件:

let saveDialog  = NSSavePanel()
        saveDialog.allowedFileTypes = ["purr"]

        saveDialog.beginWithCompletionHandler()  (result: Int) -> Void in
            if result == NSFileHandlingPanelOKButton 


                NSFileManager.defaultManager()
                    .createFileAtPath(saveDialog.URL!.path!, contents: NSData(), attributes: [NSFileExtensionHidden: NSNumber(bool: true)])
                let _ = NSKeyedArchiver.archiveRootObject(safePhrases, toFile: saveDialog.URL!.path!)
            
        

        return saveDialog.URL

但在 Finder 中查看保存的文件时,扩展名始终可见。我该如何解决这个问题?

【问题讨论】:

你试过NSFileManagersetAttributes:ofItemAtPath:error:吗? 成功了!你想写一个答案还是我应该?谢谢! do try NSFileManager.defaultManager().setAttributes([NSFileExtensionHidden: NSNumber(bool: true)], ofItemAtPath: saveDialog.URL!.path!) catch _ Swift.print("Unable to hide extension") 我对 Swift 不熟悉,我觉得还是你做比较好。 【参考方案1】:

根据 Willeke 的建议,我在写入文件后设置了属性,使用 NSFileManagersetAttributes:ofItemAtPath:error

do  try NSFileManager.defaultManager().setAttributes
    ([NSFileExtensionHidden: NSNumber(bool: true)], ofItemAtPath: saveDialog.URL!.path!)  

catch _ Swift.print("Unable to hide extension") 

【讨论】:

以上是关于保存文件但隐藏文件扩展名 - 带有键值编码的 Cocoa的主要内容,如果未能解决你的问题,请参考以下文章

熊猫:保存到excel编码问题

在 Python 中排除隐藏文件

csv文件格式问题

目标C将带有扩展名和名称的文件保存到字典

我是不是必须保存带有 jsx 扩展名的反应组件文件

怎么隐藏文件后缀名?