如何在 Objective C 中读取没有扩展名的文件

How to read a file without extension in Objective C

我的 iOS App Documents 目录中存储了一个文件。它是一个 plist 文件,但没有 .plist 文件扩展名。我想从代码中读取它的内容,但我无法打开没有扩展名的文件。有什么方法可以添加 plist 扩展名或将文件转换为 plist,或者有什么方法可以读取不带扩展名的文件内容。

这就是我的代码的样子

NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *documentsDirectory = [paths objectAtIndex:0];
NSString *filePath = [documentsDirectory stringByAppendingPathComponent:@"sample.bookmarks"];
filePath = [filePath stringByAppendingPathExtension:@"plist"];
NSDictionary *dict=[NSDictionary dictionaryWithContentsOfFile:filePath];

提前致谢

PS :如果我在 finder 中添加 .plist 扩展名(通过某种方法),我可以打开文件并查看内容。所以我确定它的类型。

试试这个。

pathToFile = [pathToFile stringByAppendingPathExtension:@"plist"];

应该可以加载 Plist 文件,无论它是否具有 .plist 扩展名。假设 Plist 文件名是 sample.bookmarks 那么下面应该加载 Plist。我假设 Plist 的根元素是一个字典,因为你声明如果 Plist 有 .plist 扩展名就可以打开。

NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *documentsDirectory = [paths objectAtIndex:0];
NSString *filePath = [documentsDirectory stringByAppendingPathComponent:@"sample.bookmarks"];
NSDictionary *dict=[NSDictionary dictionaryWithContentsOfFile:filePath];

唯一的变化是我删除了向 filePath.

添加 plist 扩展名的行

filePath = [filePath stringByAppendingPathExtension:@"plist"]; 行会将 filePath 的文件名部分更改为 sample.bookmarks.plist。如果您将扩展名更改为空字符串 (filePath = [filePath stringByAppendingPathExtension:@""];),则文件名将更改为 sample.bookmarks.,这与 sample.bookmarks.

不同