Загрузить текстовый файл из определенного места цели c - PullRequest
6 голосов
/ 03 декабря 2011

Мне было интересно, как прочитать файл из определенного места на ios.

Например, я бы очень хотел, чтобы файлы с одинаковыми именами хранились, например, в разных местах.

Проект / Файлы / Текст / 1.txt

Проект / Files / MoreText / 1.txt

В данный момент я могу загружать файлы, но не вижу, как указать конкретный каталог. Кажется, моя программа загружает файл независимо от того, где это означает, что у меня может работать только один текстовый файл или другой.

Я пытался использовать NSFileManager:

NSFileManager *filemanager = [NSFileManager defaultManager];

NSArray *filelist = [filemanager directoryContentsAtPath:@"Text"];

но позже я понял, что это на самом деле ничего не делает. Он просто не возвращает объектов. Я также видел NSBundle, но не видел пример, где возвращается определенный файл.

Мне нужно, чтобы имена файлов были одинаковыми для моего алгоритма, который загружает файлы.

Любая помощь будет оценена.

Ответы [ 4 ]

12 голосов
/ 03 декабря 2011

Если вы хотите читать файлы из пакета приложения и хотите иметь определенную структуру каталогов, то вам нужно создать каталог в Finder. Затем создайте необходимую структуру каталогов в основном каталоге, который вы только что создали. Теперь добавьте файлы в соответствующие папки, а затем добавьте основной каталог в свой проект, перетащив его в Xcode.

Вот код для чтения из основного пакета:

    NSString *filePath = [[NSBundle mainBundle] pathForResource:@"Text/1" ofType:@"txt"];
    NSString *testString = [NSString stringWithContentsOfFile:filePath encoding:NSUTF8StringEncoding error:nil];
    NSLog(@"%@",testString); 

При этом будет прочитан файл «1.txt» из каталога «Текст».

2 голосов
/ 03 декабря 2011

Приложение iOS сохранит все файлы в корневой каталог, группа (желтый значок) не является реальной папкой. Если вы хотите поместить свои ресурсы в подкаталог, можете выполнить следующие действия:

  1. Создайте каталог в Finder, поместите ваши файлы в этот каталог.
  2. В Xcode выберите «Добавить файлы в ...» из меню «Файл».
  3. Выберите «Копировать элементы в папку целевой группы» и «Создать ссылки на папки для любых добавленных папок» во всплывающем окне.

Затем в вашем проекте вы найдете каталог с синим значком. Это настоящий каталог.

Теперь вы можете читать файлы, используя метод класса NSBundle:

+ (NSArray *)pathsForResourcesOfType:(NSString *)extension inDirectory:(NSString *)bundlePath
0 голосов
/ 03 декабря 2011

Относительные пути не работают в 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.

.
0 голосов
/ 03 декабря 2011

Прежде всего, имейте в виду, что по умолчанию все файлы после компиляции отправляются в 1 каталог.Чтобы поместить их в каталог, вы должны указать это в xCode.Что касается загрузки, вы можете просто ввести относительный путь "MyDir / myFile.txt"

...