Objective c 从目标c的特定位置加载文本文件

Objective c 从目标c的特定位置加载文本文件,objective-c,ios,load,nsfilemanager,Objective C,Ios,Load,Nsfilemanager,我想知道如何从ios上的特定位置读取文件 例如,我非常希望将相同名称的文件存储在不同的位置 Project/Files/Text/1.txt Project/Files/MoreText/1.txt 目前我可以加载文件,但看不到如何指定特定目录。我的程序似乎加载了一个文件,无论它在哪里,这意味着我只能有一个文本文件或其他工作 我已尝试使用NSFileManager: NSFileManager *filemanager = [NSFileManager defaultManager]; NSA

我想知道如何从ios上的特定位置读取文件

例如,我非常希望将相同名称的文件存储在不同的位置

Project/Files/Text/1.txt

Project/Files/MoreText/1.txt

目前我可以加载文件,但看不到如何指定特定目录。我的程序似乎加载了一个文件,无论它在哪里,这意味着我只能有一个文本文件或其他工作

我已尝试使用NSFileManager:

NSFileManager *filemanager = [NSFileManager defaultManager];

NSArray *filelist = [filemanager directoryContentsAtPath:@"Text"];
但我后来意识到这实际上没有任何作用。它只是不返回任何对象。我也看过NSBundle,但没有看到返回特定文件的示例

我需要文件名与加载文件的算法相同


任何帮助都将不胜感激。

首先,请记住,默认情况下,编译后所有文件都会转到一个目录。要将它们放入目录,必须在xCode中指定。至于加载,您只需输入相对路径“MyDir/myFile.txt”

相对路径在Mac OS X上不起作用——这是因为当前目录被Cocoa忽略,并且几乎是随机更改的。您需要始终使用绝对路径。要获取应用程序
资源
目录的绝对路径,请使用:

NSString *resDir = [[NSBundle mainBundle] resourcePath];
然后,要枚举该目录中
Text
目录的内容:

NSString *textDir = [resDir stringByAppendingPathComponent: @"Text"];
NSArray *textFiles = [[NSFileManager defaultManager] directoryContentsAtPath: textDir];

但是,Xcode可能会也可能不会遵守应用程序
资源
目录中的文件层次结构。要确定文件是否在您期望的位置,您应该构建应用程序,右键单击
.app
捆绑包,然后选择
显示软件包内容

iOS应用程序将所有文件保存到根目录,一个组(黄色图标)不是真正的目录。如果要将资源放入子目录,可以使用以下步骤:

  • 在Finder中创建一个目录,将文件放入该目录
  • 在Xcode中,从文件菜单中选择“将文件添加到…”
  • 在弹出窗口中选择“将项目复制到目标组的文件夹”和“为任何添加的文件夹创建文件夹引用”
  • 然后,您将在项目中找到一个蓝色图标目录,它是一个真实的目录

    现在,您可以使用NSBundle类方法读取文件:

    + (NSArray *)pathsForResourcesOfType:(NSString *)extension inDirectory:(NSString *)bundlePath
    

    如果你想从应用程序包中读取文件,并且想要一个特定的目录结构,那么你需要在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”。

    我已按照您的建议尝试过,我将文件放在项目中的一个单独文件夹中,但当我添加文件并按照您的建议执行时,似乎是在基本目录中复制文件,而不是使用文件夹中的文件。出什么问题了?我应该说我使用的是xCode 3而不是4。