Обсуждение

Обсуждение

Пожалуй, удаление файлов и каталогов — одна из простейших операций, которые можно совершать в файловом менеджере. В iOS нужно обязательно помнить о том, где вы храните ваши файлы и каталоги, а когда хранить их больше не требуется — избавляться от файлов и каталогов. Например, создадим пять текстовых файлов в каталоге tmp/text, а когда закончим работу с ними — удалим эти файлы. Тем временем мы успеем перечислить содержимое каталога по состоянию до и после удаления. Будем делать перечень лишь для того, чтобы убедиться, что все работает правильно. Как вы помните, на момент установки приложения каталог tmp/ существует, а каталог tmp/text — нет. Поэтому для начала потребуется создать второй каталог. Как только закончим работу с файлами, удалим и сам каталог:

/* Создаем каталог по заданному пути */

— (void) createFolder:(NSString *)paramPath{

NSError *error = nil;

if ([self.fileManager createDirectoryAtPath: paramPath

withIntermediateDirectories: YES

attributes: nil

error:&error] == NO){

NSLog(@"Failed to create folder %@. Error = %@",

paramPath,

error);

}

}

/* Создаем пять файлов с расширением. txt в заданном каталоге, называем

их 1.txt, 2.txt и т. д. */

— (void) createFilesInFolder:(NSString *)paramPath{

/* Создаем 10 файлов */

for (NSUInteger counter = 0; counter < 5; counter++){

NSString *fileName = [NSString stringWithFormat:@"%lu.txt",

(unsigned long)counter+1];

NSString *path = [paramPath stringByAppendingPathComponent: fileName];

NSString *fileContents = [NSString stringWithFormat:@"Some text"];

NSError *error = nil;

if ([fileContents writeToFile: path

atomically: YES

encoding: NSUTF8StringEncoding

error:&error] == NO){

NSLog(@"Failed to save file to %@. Error = %@", path, error);

}

}

}

/* Перечисляем все файлы/каталоги, расположенные по заданному пути */

— (void) enumerateFilesInFolder:(NSString *)paramPath{

NSError *error = nil;

NSArray *contents = [self.fileManager contentsOfDirectoryAtPath: paramPath

error:&error];

if ([contents count] > 0 &&

error == nil){

NSLog(@"Contents of path %@ =  %@", paramPath, contents);

}

else if ([contents count] == 0 &&

error == nil){

NSLog(@"Contents of path %@ is empty!", paramPath);

}

else {

NSLog(@"Failed to enumerate path %@. Error = %@", paramPath, error);

}

}

/* Удаляем все файлы/каталоги по заданному пути */

— (void) deleteFilesInFolder:(NSString *)paramPath{

NSError *error = nil;

NSArray *contents = [self.fileManager contentsOfDirectoryAtPath: paramPath

error:&error];

if (error == nil){

error = nil;

for (NSString *fileName in contents){

/* У нас есть имя файла, но, чтобы удалить этот файл,

нужен полный путь к нему */

NSString *filePath = [paramPath

stringByAppendingPathComponent: fileName];

if ([self.fileManager removeItemAtPath: filePath

error:&error] == NO){

NSLog(@"Failed to remove item at path %@. Error = %@",

fileName,

error);

}

}

} else {

NSLog(@"Failed to enumerate path %@. Error = %@", paramPath, error);

}

}

/* Удаляем каталог, к которому ведет заданный путь*/

— (void) deleteFolder:(NSString *)paramPath{

NSError *error = nil;

if ([self.fileManager removeItemAtPath: paramPath error:&error] == NO){

NSLog(@"Failed to remove path %@. Error = %@", paramPath, error);

}

}

Не забывайте: свойство fileManager, которое мы используем в различных методах делегата нашего приложения, — это свойство самого делегата приложения, определяемое следующим образом:

#import «AppDelegate.h»

@interface AppDelegate ()

@property (nonatomic, strong) NSFileManager *fileManager;

@end

@implementation AppDelegate

<# Здесь находится остаток кода делегата приложения #>

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

1. Создание каталога tmp/txt. Мы знаем, что каталог tmp создается в iOS для каждого приложения, но подкаталог txt на момент установки приложения отсутствует.

2. Создание пяти файлов в каталоге tmp/txt.

3. Перечисление всех файлов в каталоге tmp/txt. Эту операцию нужно выполнить лишь для того, чтобы убедиться, что мы успешно создали в этом каталоге все пять файлов.

4. Удаление всех созданных файлов — собственно, именно эта операция интересовала нас в данном разделе.

5. Повторное перечисление файлов в каталоге tmp/txt. Эту операцию мы выполняем для того, чтобы убедиться, что механизм удаления сработал правильно.

6. Удаление каталога tmp/txt, ведь он нам больше не нужен. Повторюсь: обязательно учитывайте, какие файлы и каталоги вы создаете на диске. Дисковое пространство на дороге не валяется! Поэтому, если какие-то файлы или каталоги вам больше не нужны, обязательно их удаляйте.

Данный текст является ознакомительным фрагментом.