iOS input file 文件类型

在iOS开发中,我们经常需要处理各种类型的文件。文件处理包括读取、写入、创建以及删除等操作。然而,在iOS中处理文件的方式有很多种,每一种方式都有其自身的特点和用途。本文将介绍iOS中常见的文件类型以及相应的处理方式,并提供代码示例帮助读者更好地理解和应用这些知识。

1. 文件类型

iOS中常见的文件类型包括文本文件、二进制文件、属性列表文件(Property List)和归档文件(Archive)。下面将分别介绍这些文件类型的特点和处理方式。

1.1 文本文件

文本文件是一种包含字符串的文件类型。在iOS中,我们可以使用NSString类来读取和写入文本文件。下面是一个读取文本文件的示例代码:

NSError *error = nil;
NSString *filePath = [[NSBundle mainBundle] pathForResource:@"example" ofType:@"txt"];
NSString *fileContent = [NSString stringWithContentsOfFile:filePath encoding:NSUTF8StringEncoding error:&error];

if (error) {
    NSLog(@"读取文件失败:%@", error.localizedDescription);
} else {
    NSLog(@"文件内容:%@", fileContent);
}

1.2 二进制文件

二进制文件是一种包含二进制数据的文件类型。在iOS中,我们通常使用NSData类来处理二进制文件。下面是一个读取二进制文件的示例代码:

NSError *error = nil;
NSString *filePath = [[NSBundle mainBundle] pathForResource:@"example" ofType:@"bin"];
NSData *fileData = [NSData dataWithContentsOfFile:filePath options:NSDataReadingUncached error:&error];

if (error) {
    NSLog(@"读取文件失败:%@", error.localizedDescription);
} else {
    NSLog(@"文件数据:%@", fileData);
}

1.3 属性列表文件

属性列表文件(Property List)是一种用于存储结构化数据的文件类型。在iOS中,我们可以使用NSDictionary和NSArray类来读取和写入属性列表文件。下面是一个读取属性列表文件的示例代码:

NSError *error = nil;
NSString *filePath = [[NSBundle mainBundle] pathForResource:@"example" ofType:@"plist"];
NSDictionary *fileData = [NSDictionary dictionaryWithContentsOfFile:filePath];

if (error) {
    NSLog(@"读取文件失败:%@", error.localizedDescription);
} else {
    NSLog(@"属性列表数据:%@", fileData);
}

1.4 归档文件

归档文件(Archive)是一种将对象序列化为二进制数据的文件类型。在iOS中,我们可以使用NSKeyedArchiver和NSKeyedUnarchiver类来实现对象的归档和解档。下面是一个归档和解档对象的示例代码:

NSError *error = nil;
NSString *filePath = [NSTemporaryDirectory() stringByAppendingPathComponent:@"example.archive"];

// 归档对象
NSData *archivedData = [NSKeyedArchiver archivedDataWithRootObject:object requiringSecureCoding:YES error:&error];
[archivedData writeToFile:filePath options:NSDataWritingAtomic error:&error];

if (error) {
    NSLog(@"归档对象失败:%@", error.localizedDescription);
} else {
    NSLog(@"归档成功");
}

// 解档对象
NSData *unarchivedData = [NSData dataWithContentsOfFile:filePath options:NSDataReadingUncached error:&error];
id unarchivedObject = [NSKeyedUnarchiver unarchivedObjectOfClass:[Object class] fromData:unarchivedData error:&error];

if (error) {
    NSLog(@"解档对象失败:%@", error.localizedDescription);
} else {
    NSLog(@"解档成功");
}

2. 文件处理示例

为了更好地理解和应用上述知识,我们可以使用一个文件管理器应用作为示例。该应用可以列出指定目录下的所有文件,并提供文件预览和删除功能。下面是一个简化版的文件管理器示例代码:

#import <UIKit/UIKit.h>

@interface FileManagerViewController : UIViewController<UITableViewDataSource, UITableViewDelegate>

@property (nonatomic, strong) UITableView *tableView;
@property (nonatomic, strong) NSMutableArray *fileList;

@end

@implementation FileManagerViewController

- (void)viewDidLoad {
    [super viewDidLoad];
    
    [self loadFileList];
    [self setupTableView];
}

- (void)loadFileList {
    NSString *directoryPath = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) firstObject];
    NSFileManager *fileManager = [NSFileManager defaultManager];
    NSArray *contents = [