服务器ios文件夹是否存在,iOS文件操作

一、获取沙盒下文件目录

沙盒应用根目录:NSHomeDirectory()是应用程序目录的路径,在改文件目录下有三个文件夹:Documents、Library、temp以及一个.app包

NSString *homeDir = NSHomeDirectory();

应用程序包:存放应用程序的源文件,包括资源文件和可执行文件

[[NSBundle mainBundle] pathForResource:@"wtdb" ofType:@"sqlite"];

Documents:保存用户生成的文件、应用程序不能重新创建的文件。可被iTunes备份

// 获取Documents目录路径

NSString *docDir = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) firstObject];

Library:可创建子文件夹。除Caches以外,都会被iTunes备份

/Preferences:包含应用程序的偏好设置文件

/Caches:用于存放应用程序专用的支持文件,保存应用程序再次启动过程中需要的信息,保存可以重新下载或者重新生成的数据。适合存储体积大,不需要备份的非重要数据

// 获取Library的目录路径

NSString *libDir = [NSSearchPathForDirectoriesInDomains(NSLibraryDirectory, NSUserDomainMask, YES) lastObject];

// 获取Caches目录路径

NSString *cachesDir = [NSSearchPathForDirectoriesInDomains(NSCachesDirectory, NSUserDomainMask, YES) firstObject];

tmp:存放临时数据,保存应用程序再次启动过程中不需要的信息。不会被iTunes备份

// 获取tmp目录路径

NSString *tmpDir = NSTemporaryDirectory();

Documents和Caches文件夹区别

如果你做个记事本的app,那么用户写了东西,总要把东西存起来。那么这个文件则是用户自行生成的,就放在documents文件夹里面。

如果需要和服务器配合,经常从服务器下载东西,展示给用户看。那么这些下载下来的东西就放在library/caches。

二、文件夹操作

创建文件夹

NSString *documentsDir = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) lastObject];

//test文件夹

documentsDir = [documentsDir stringByAppendingPathComponent:@"test"];

//是否是文件夹

BOOL isDir;

BOOL isExit = [filemanager fileExistsAtPath:documentsDir isDirectory:&isDir];

//文件夹是否存在

if (!isExit || !isDir) {

[filemanager createDirectoryAtPath:documentsDir withIntermediateDirectories:YES attributes:nil error:nil];

}

删除文件夹

//删除Wtdb文件夹

NSString *cachesDir = [NSSearchPathForDirectoriesInDomains(NSCachesDirectory, NSUserDomainMask, YES) firstObject];

NSString *wtdbPath = [cachesDir stringByAppendingPathComponent:@"Wtdb"];

NSFileManager *fileManager = [NSFileManager defaultManager];

if ([fileManager fileExistsAtPath:wtdbPath]) {

BOOL isSuccess = [fileManager removeItemAtPath:wtdbPath error:nil];

}

移动文件夹

NSString *documentsPath = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) firstObject];

NSFileManager *fileManager = [NSFileManager defaultManager];

NSString *filePath = [documentsPath stringByAppendingPathComponent:@"iOS.txt"];

NSString *moveToPath = [documentsPath stringByAppendingPathComponent:@"iOS.txt"];

BOOL isSuccess = [fileManager moveItemAtPath:filePath toPath:moveToPath error:nil];

if (isSuccess) {

NSLog(@"rename success");

}else{

NSLog(@"rename fail");

}

重命名文件夹

//通过移动该文件对文件重命名

NSString *documentsPath = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) firstObject];

NSFileManager *fileManager = [NSFileManager defaultManager];

NSString *filePath = [documentsPath stringByAppendingPathComponent:@"iOS.txt"];

NSString *moveToPath = [documentsPath stringByAppendingPathComponent:@"rename.txt"];

BOOL isSuccess = [fileManager moveItemAtPath:filePath toPath:moveToPath error:nil];

if (isSuccess) {

NSLog(@"rename success");

}else{

NSLog(@"rename fail");

}

三、文件操作

复制

//bundle里的数据库文件复制到Caches/Wtdb文件夹下

NSString *cachesDir = [NSSearchPathForDirectoriesInDomains(NSCachesDirectory, NSUserDomainMask, YES) firstObject];

NSFileManager *filemanager = [NSFileManager defaultManager];

cachesDir = [cachesDir stringByAppendingPathComponent:@"Wtdb"];

BOOL isDir;//是否是文件夹

BOOL exit = [filemanager fileExistsAtPath:cachesDir isDirectory:&isDir];

//文件夹是否存在

if (!exit || !isDir) {

[filemanager createDirectoryAtPath:cachesDir withIntermediateDirectories:YES attributes:nil error:nil];

}

//判断数据库文件是否存在

NSString *wtdbPath = [cachesDir stringByAppendingPathComponent:@"wtdb.sqlite"];

//如果文件不存在,则复制

if (![filemanager fileExistsAtPath:wtdbPath]) {

NSString *dbBundlePath = [[NSBundle mainBundle] pathForResource:@"wtdb" ofType:@"sqlite"];

BOOL isSuccess = [filemanager copyItemAtPath:dbBundlePath toPath:wtdbPath error:nil];

DLog(@"数据库文件%@", isSuccess ? @"拷贝成功" : @"拷贝失败");

}

删除、移动、重命名与文件夹操作类似,path为文件路径。

写数据到文件

NSString *documentsPath =[self dirDoc];

NSString *testDirectory = [documentsPath stringByAppendingPathComponent:@"test"];

NSString *testPath = [testDirectory stringByAppendingPathComponent:@"test.txt"];

NSString *content=@"测试写入内容!";

BOOL res=[content writeToFile:testPath atomically:YES encoding:NSUTF8StringEncoding error:nil];

if (res) {

NSLog(@"文件写入成功");

}else {

NSLog(@"文件写入失败");

}

读文件数据

NSString *documentsPath =[self dirDoc];

NSString *testDirectory = [documentsPath stringByAppendingPathComponent:@"test"];

NSString *testPath = [testDirectory stringByAppendingPathComponent:@"test.txt"];

//NSData *data = [NSData dataWithContentsOfFile:testPath];

//NSLog(@"文件读取成功: %@",[[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding]);

NSString *content=[NSString stringWithContentsOfFile:testPath encoding:NSUTF8StringEncoding error:nil];

NSLog(@"文件读取成功: %@",content);

文件属性

NSString *documentsPath =[self dirDoc];

NSString *testDirectory = [documentsPath stringByAppendingPathComponent:@"test"];

NSFileManager *fileManager = [NSFileManager defaultManager];

NSString *testPath = [testDirectory stringByAppendingPathComponent:@"test.txt"];

NSDictionary *fileAttributes = [fileManager attributesOfItemAtPath:testPath error:nil];

NSArray *keys;

id key, value;

keys = [fileAttributes allKeys];

int count = [keys count];

for (int i = 0; i < count; i++)

{

key = [keys objectAtIndex: i];

value = [fileAttributes objectForKey: key];

NSLog (@"Key: %@ for value: %@", key, value);

}

参考:

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值