@fiy-fish
2015-07-19T12:23:52.000000Z
字数 4068
阅读 1471
Objective-c
// main.m
// day08-01-文件
//
// Created by Aaron on 15/7/10.
// Copyright (c) 2015年 Aaron. All rights reserved.
//
#import <Foundation/Foundation.h>
//对文件的操作
//NSFileManager
//对文件内容的操作
//NSFileHandle
#if 0
int main(int argc, const char * argv[]) {
@autoreleasepool {
NSFileManager *manager = [NSFileManager defaultManager];
//查看目录下的内容
/*
- (NSArray *)contentsOfDirectoryAtPath:(NSString *)path error:(NSError **)error NS_AVAILABLE(10_5, 2_0);
返回值是返回目录下所有的文件的相对路径
浅遍历----只遍历当前一层目录
如果路径错了,会返回nil
*/
NSError __autoreleasing *e = nil;
NSArray *contens = [manager contentsOfDirectoryAtPath:@"/users/Aaron/desktop/file" error:&e];
NSLog(@"%@",contens);
//深遍历----不管层次有多深,全部遍历出来
contens = [manager subpathsOfDirectoryAtPath:@"/users/Aaron/desktop/file" error:&e];
NSLog(@"%@",contens);
//在桌面上创建一个目录,里面放一些文件,将所有的txt文档都遍历出来
NSMutableArray *txts = [NSMutableArray array];
for(NSString *obj in contens)
{
if([obj hasSuffix:@".txt"])
{
[txts addObject:obj];
}
}
NSLog(@"%@",txts);
}
return 0;
}
#endif
//复制 粘贴 移动 删除 创建
#if 0
int main()
{
//创建目录
NSFileManager *manager = [NSFileManager defaultManager];
NSError __autoreleasing *err = nil;
/*
- (BOOL)createDirectoryAtPath:(NSString *)path withIntermediateDirectories:(BOOL)createIntermediates attributes:(NSDictionary *)attributes error:(NSError **)error NS_AVAILABLE(10_5, 2_0);
返回值表示创建成功或者失败
注意: 路径需要包含新的文件的名字
参数一: 路径
参数二: 是否需要自动创建中间层目录
参数三: 文件的属性
参数四: 错误信息
*/
BOOL rec = [manager createDirectoryAtPath:@"/users/Aaron/desktop/newFile/test1/test2" withIntermediateDirectories:YES attributes:nil error:&err];
// if(rec)
// {
// NSLog(@"创建目录成功");
// }
// else
// {
// NSLog(@"创建目录失败 error: %@",err);
// }
//创建文件
//- (BOOL)createFileAtPath:(NSString *)path contents:(NSData *)data attributes:(NSDictionary *)attr;
//参数一: 路径 (包含文件名)
//注意: 创建目录,不允许同名,创建文件,同名则会覆盖掉原来的文件
//参数二: 文件的内容
//参数三:文件属性
//NSData 二进制的数据流的类
NSString *str = @"xiaoxin";
NSData *data = [str dataUsingEncoding:NSUTF8StringEncoding];
rec = [manager createFileAtPath:@"/users/Aaron/desktop/newFile/file1.txt" contents:data attributes:nil];
if(rec)
{
NSLog(@"创建文件成功");
}
else
{
NSLog(@"创建文件失败");
}
}
#endif
/*
练习:扩展NSFileManager
实现一个方法,提供一共路径,创建一个未命名的文件
实现一个方法,提供一个路径,创建一个未命名的文件夹
*/
#if 0
int main()
{
//检测文件是否存在
NSFileManager *manager = [NSFileManager defaultManager];
//检测指定路径的文件是否存在
BOOL rec = [manager fileExistsAtPath:@"/users/Aaron/desktop/newFile"];
NSLog(@"%@",rec?@"存在":@"不存在");
BOOL isDir = NO;
rec = [manager fileExistsAtPath:@"/users/Aaron/desktop/newFile" isDirectory:&isDir];
NSLog(@"%@",isDir?@"是目录":@"不是目录");
}
#endif
#if 0
int main()
{
//文件属性
NSFileManager *manager = [NSFileManager defaultManager];
//获取文件属性
/*
- (NSDictionary *)attributesOfItemAtPath:(NSString *)path error:(NSError **)error NS_AVAILABLE(10_5, 2_0);
*/
NSDictionary *dic = [manager attributesOfItemAtPath:@"/users/Aaron/desktop/newFile/file1.txt" error:nil];
NSLog(@"%@",dic);
//NSFilePosixPermissions 文件可移植权限
NSNumber *num = dic[NSFilePosixPermissions];
NSLog(@"%@",num);
int temp = [num intValue];
temp = 0744;
NSLog(@"%d",temp);
NSMutableDictionary *dic1 = [NSMutableDictionary dictionaryWithDictionary:dic];
[dic1 setObject:@(temp) forKey:NSFilePosixPermissions];
[manager setAttributes:dic1 ofItemAtPath:@"/users/Aaron/desktop/newFile/file1.txt" error:nil];
}
#endif
//复制 移动 删除
int main()
{
NSFileManager *manager = [NSFileManager defaultManager];
NSError __autoreleasing *err = nil;
//注意:路径都要包含新的文件名
//这个方法即可以拷贝文件,也可以拷贝目录,拷贝目录是深遍历
[manager copyItemAtPath:@"/users/Aaron/desktop/newFile" toPath:@"/users/Aaron/desktop/file/file1111" error:&err];
NSLog(@"%@",err);
//移动文件或者文件夹到指定路径
[manager moveItemAtPath:@"/users/Aaron/desktop/file" toPath:@"/users/Aaron/desktop/newFile/ffff" error:nil];
//删除文件或者文件夹
//注意:路径不要写错,写错了就找不回来了
[manager removeItemAtPath:@"/users/Aaron/desktop/newFile" error:nil];
}
/*
练习:扩展NSFileManager
实现一个方法,提供一共路径,创建一个未命名的文件
实现一个方法,提供一个路径,创建一个未命名的文件夹
*/
#import <Foundation/Foundation.h>
@interface NSFileManager (MyManager)
- (BOOL)myCreateFileAtPath:(NSString *)path contents:(NSData *)data attributes:(NSDictionary *)attr;
@end
/*
练习:扩展NSFileManager
实现一个方法,提供一共路径,创建一个未命名的文件
实现一个方法,提供一个路径,创建一个未命名的文件夹
*/
#import "NSFileManager+MyManager.h"
@implementation NSFileManager (MyManager)
-(BOOL)myCreateFileAtPath:(NSString *)path contents:(NSData *)data attributes:(NSDictionary *)attr
{
NSString *newPtah = [NSString stringWithFormat:@"%@/未命名文件",path];
return [self createFileAtPath:newPtah contents:data attributes:attr];
}
@end