将文件名与文件扩展名 Cocoa 分开?

Posted

技术标签:

【中文标题】将文件名与文件扩展名 Cocoa 分开?【英文标题】:Separate filename from file extension Cocoa? 【发布时间】:2011-09-04 04:22:16 【问题描述】:

我正在使用writeToFile:atomically: 方法将一些加密数据写入文本文件。问题是,它需要保存的文件必须是用户加密的文件,并带有我选择的扩展名。这是我目前所拥有的:

[encryptedData writeToFile:[[NSHomeDirectory() stringByAppendingPathComponent:@"Desktop"] 
    stringByAppendingPathComponent:@"encryptedfile.txt.kry"] atomically:YES];
                                           ^//fileName here

如您所见,加密文件名被硬编码为 encryptedfile.txt.kry。但是假设用户选择文件“test.avi”进行加密,写入桌面的加密文件应该命名为test.avi.kry。所以应该有 ofType:,就像在 NSBundle 中一样。我知道这里有一些我可以使用的 NSString 方法,但已经忘记了。

谢谢!

【问题讨论】:

【参考方案1】:

你不能只将 .kry 附加到文件名上吗?

如果你有路径,并且只想要文件名,你可以使用- (NSString *)lastPathComponent:

NSString *filename = [filePath lastPathComponent];
[encryptedData writeToFile:[[NSHomeDirectory() stringByAppendingPathComponent:@"Desktop"] 
    stringByAppendingPathComponent:[filename stringByAppendingString:@".kry"] atomically:YES];

如果你想要不带扩展名的文件名,你可以使用- (NSString *)stringByDeletingPathExtension:

NSString *filename = [[filePath lastPathComponent] stringByDeletingPathExtension];

【讨论】:

我不小心放错了a']',这解释了为什么它最初不起作用。这么笨的我忘记了这样的事情,永远不会忘记!谢谢!

以上是关于将文件名与文件扩展名 Cocoa 分开?的主要内容,如果未能解决你的问题,请参考以下文章

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

是否可以在 Cocoa 中确定文件是否是从别名打开的?

在 Objective-C 中的指定路径获取具有特定扩展名的文件列表

将文件拖入 cocoa OSX 中的其他应用程序

阿里推出 PolarFS 分布式文件系统:将存储与计算分开,提升云数据库性能(附论文)

从内容而不是从扩展名中获取文件类型[重复]