如何在 iOS 中读取、写入和检查不区分大小写的文件名?

Posted

技术标签:

【中文标题】如何在 iOS 中读取、写入和检查不区分大小写的文件名?【英文标题】:How can I read, write and check case-insensitive filenames in iOS? 【发布时间】:2013-02-27 19:58:38 【问题描述】:

我了解 ios 文件名区分大小写,而 OSX 文件名可以不区分大小写。 Apple 的 iCloud 设计指南说:

“要使您的文档文件格式跨平台兼容,您必须以不区分大小写的方式读写文件。” (来自http://developer.apple.com/library/ios/#documentation/General/Conceptual/iCloudDesignGuide/Chapters/DesigningForDocumentsIniCloud.html

我想让我的应用程序的文件管理在 iOS 中不区分大小写。在 iCloud 和本地文件系统中,以不区分大小写的方式在 iOS 中处理读取和写入文件以及检查文件是否存在(使用[NSFileManager fileExistsAtPath:])的正确方法是什么?

【问题讨论】:

【参考方案1】:

没有特定的东西会使 iOS 不区分大小写。就是这样。他们告诉你的是,你不能依赖大小写敏感(不要创建仅区分大小写的文件),并且你不应该草率​​地使用大小写(不要创建“自述文件”然后阅读“自述文件”)。

如果您在 iOS 上接受来自用户的任意文件名,然后计划将这些文件名发送到 iCloud,那么您将需要查询 iCloud 上存在的所有文件并验证不存在不区分大小写的冲突(使用 @ 987654321@)。不过,只要您专门使用 iCloud,这种情况就不应该出现太多。

【讨论】:

对于非 iCloud 使用,这是否意味着我需要放弃像 [NSFileManager fileExistsAtPath:] 这样的内置方法并用我自己的自定义实现替换它们? 仅当您打算将这些文件发送到 iCloud,或者您希望相同的代码在 iOS 和 Mac 上运行时。这有点不寻常(尽管并非闻所未闻)。

以上是关于如何在 iOS 中读取、写入和检查不区分大小写的文件名?的主要内容,如果未能解决你的问题,请参考以下文章

区分大小写的文件扩展名和存在检查

在 PHP 中不使用太多内存的情况下读取/写入大型 XML

检查文件系统在 Python 中是不是不区分大小写

如何在Java中以不区分大小写的方式检查一个字符串是不是包含另一个字符串?

如何使字符串检查不区分大小写?

敏感词汇过滤(不区分大小写)