objective-c文件操作
//
// main.m
// NsFileManager
//
// Created by adairwang on 15/11/24.
// Copyright © 2015年 adairwang. All rights reserved.
//
#import <Foundation/Foundation.h>
int main(int argc, const char * argv[]) {
@autoreleasepool {
//运行前请将终端CD到程序目录删除目录和文件/Users/adairwang/library/developer/xcode/deriveddata/NsFileManager-hbigtepyeedukxegvtseppiutjmm/Build/Products/Debug
//否则会提示相应数字错误。
//创建一个文件名对象,通常可以设置为路径字符串
NSString *fName=@"testfile";
//设置文件内容对象,目前只涉及字符串和数字等,不涉及多媒体
NSString *fileContent=@"\nThis is a test file with some data in it!\nHere is anther line of data.\nAnd a third; ";
//将文件内容对象写入临时存储区
NSData *fileData=[fileContent dataUsingEncoding:NSUTF8StringEncoding];
//创建文件实例对象
NSFileManager *fm;
//创建文件属性对象
NSDictionary *attr;
NSString *dirName=@"testdir";
fm = [NSFileManager defaultManager];
//创建文件testfile
[fm createFileAtPath:fName contents:fileData attributes:nil];
//输出文件内容
NSLog(@"%@",[NSString stringWithContentsOfFile:@"testfile" encoding:NSUTF8StringEncoding error:NULL]);
//判断文件是否存在
if([fm fileExistsAtPath:fName]==NO){
NSLog(@"file doestn't exist!");
return 1;
}
//创建一个副本
if ([fm copyItemAtPath:fName toPath:@"newfile" error:NULL]==NO) {
NSLog(@"file copy failed!");
return 2;
}
//测试两个文件是否一致
if ([fm contentsEqualAtPath:fName andPath:@"newfile"]==NO){
NSLog(@"file are not equal!");
return 3;
}
//重命名副本
if ([fm moveItemAtPath:@"newfile" toPath:@"newfile2" error:NULL]==NO) {
NSLog(@"file rename failed");
return 4;
}
//获取newfile2的大小
if ((attr = [fm attributesOfItemAtPath:@"newfile2" error:NULL])== nil) {
NSLog(@"cloudn't get file attributes");
return 5;
}
NSLog(@"file size is %llu byte",[[attr objectForKey:NSFileSize] unsignedLongLongValue]);
//最后删除原始文件
if ([fm removeItemAtPath:fName error:NULL]==NO) {
NSLog(@"file removal failed");
return 6;
}
//显示新创建的文件内容
NSLog(@"%@",[NSString stringWithContentsOfFile:@"newfile2" encoding:NSUTF8StringEncoding error:NULL]);
//测试文件到写入和读取
fileData =[fm contentsAtPath:@"newfile2"];
if (fileData==nil) {
NSLog(@"file read failed,no contents!");
return 7;
}
if ([fm createFileAtPath:@"newfile3" contents:fileData attributes:nil]==NO) {
NSLog(@"cloudnot create the copy!");
return 8;
}
NSLog(@"file copy are successful!");
//测试删除文件
[fm removeItemAtPath:@"newfile2" error:NULL];
[fm removeItemAtPath:@"newfile3" error:NULL];
//显示文件当前路径
NSString *path = [fm currentDirectoryPath];
NSLog(@"path:%@",path);
//创建新目录
if([fm createDirectoryAtPath:dirName withIntermediateDirectories:YES attributes:nil error:NULL]==NO){
NSLog(@"couldnot create directory");
return 9;
};
//显示最新当前路径
NSLog(@"path:%@",[fm currentDirectoryPath]);
//重命名新的目录
if([fm moveItemAtPath:dirName toPath:@"newDir" error:NULL]==NO){
NSLog(@"directory rename failed!");
return 10;
};
//更改当前目录到新的目录
if([fm changeCurrentDirectoryPath:@"newDir"]==NO){
NSLog(@"change directory failed!");
return 11;
};
//显示最新当前路径
NSLog(@"path:%@",[fm currentDirectoryPath]);
//在新目录下创建文件并枚举目录路径
[fm createFileAtPath:fName contents:fileData attributes:nil];
NSDirectoryEnumerator *dirEnum;
NSArray *dirArray;
dirEnum =[fm enumeratorAtPath:path];
NSLog(@"contents of %@",path);
while ((path =[dirEnum nextObject])!=nil) {
NSLog(@"%@",path);
}
//另一种枚举目录的方法
dirArray =[fm contentsOfDirectoryAtPath:[fm currentDirectoryPath] error:NULL];
NSLog(@"contents using contentsofdirectoryAtpath:error:");
for (path in dirArray) {
NSLog(@"%@",path);
}
}
return 0;
}