我想知道如何从ios上的特定位置读取文件。
例如,我非常希望将相同名称的文件存储在不同的位置。
项目/文件/文本/ 1.txt的
项目/文件/ MoreText / 1.txt的
目前我可以加载文件,但我看不到如何指定特定目录。我的程序似乎加载了一个文件,无论它在哪里意味着我只能有一个文本文件或另一个文件。
我尝试过使用NSFileManager:
NSFileManager *filemanager = [NSFileManager defaultManager];
NSArray *filelist = [filemanager directoryContentsAtPath:@"Text"];
但我后来意识到这实际上并没有做任何事情。它只返回没有对象。我也看过NSBundle,但还没有看到返回特定文件的例子。
我需要文件名与我加载文件的算法相同。
任何帮助都将不胜感激。
答案 0 :(得分:12)
如果要从应用程序包中读取文件并且想要某个目录结构,则需要在Finder中创建目录。然后在刚刚创建的主目录中创建所需的目录结构。现在将文件添加到相应的文件夹中,然后将主目录添加到项目中,方法是将其拖入Xcode。
以下是从主要包中读取的代码:
NSString *filePath = [[NSBundle mainBundle] pathForResource:@"Text/1" ofType:@"txt"];
NSString *testString = [NSString stringWithContentsOfFile:filePath encoding:NSUTF8StringEncoding error:nil];
NSLog(@"%@",testString);
这将从“Text”目录中读取文件“1.txt”。
答案 1 :(得分:2)
iOS应用程序会将所有文件保存到根目录,一个组(黄色图标)不是真正的目录。如果要将资源放入子目录,可以使用以下步骤:
然后,您将在项目中找到一个蓝色图标目录,它是一个真实的目录。
现在,您可以使用NSBundle Class方法读取文件:
+ (NSArray *)pathsForResourcesOfType:(NSString *)extension inDirectory:(NSString *)bundlePath
答案 2 :(得分:0)
首先,请记住,默认情况下,所有文件在编译后都会转到1个目录。要将它们放到目录中,您必须在xCode中指定它。至于加载,你可以输入相对路径“MyDir / myFile.txt”
答案 3 :(得分:0)
相对路径在Mac OS X上不起作用 - 这是因为Cocoa忽略了当前目录,并且几乎随机变化。您需要始终使用绝对路径。要获取应用程序的Resources
目录的绝对路径,请使用:
NSString *resDir = [[NSBundle mainBundle] resourcePath];
然后枚举该目录中Text
目录的内容:
NSString *textDir = [resDir stringByAppendingPathComponent: @"Text"];
NSArray *textFiles = [[NSFileManager defaultManager] directoryContentsAtPath: textDir];
但是,Xcode可能会也可能不会尊重应用程序Resources
目录中的文件层次结构。要确定文件是否符合您的预期,您应该构建应用,右键单击.app
包,然后选择Show Package Contents
。