文件或目录是使用文件的路径名的唯一标识。相对路径是相对于当前目录的路径名,每个路径名都是一个NSString对象,它既可以是相对路径,也可以是完整的路径。
完整路径也称为绝对路径,以斜线/开始,斜线实际上就是一个目录,为根目录。
特殊的代字符作为用户主目录的缩写。~linda表示 用户linda主目录的缩写,这个目录的路径可能是/User/linda。
单个代字符表示当前用户的主目录,路径名 ~/copy1.m会 引用存储在当前用户主目录中的文件copy1.m。
/ 基本的文件操作
//假定存在一个名为testfile文件,内容如下:
//This is a test file with some data in it.Here is a another line of data.And a third.
// Created by 强淑婷 on 2018/6/10.
// Copyright © 2018年 强淑婷. All rights reserved.
//
#import <Foundation/Foundation.h>
int main(int argc, const char * argv[]) {
@autoreleasepool {
NSString *fName = @"testfile";
NSFileManager *fm;
NSDictionary *attr;
//需要创建文件管理器的实例
fm = [NSFileManager defaultManager];
//首先确认测试文件存在
if([fm fileExistsAtPath: fName] == NO){
NSLog(@"File doesn'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(@"Files 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(@"Couldn't get file attributes!");
return 5;
}
NSLog(@"File size is %llu bytes", [[attr objectForKey: NSFileSize] unsignedLongLongValue]);
//最后删除原始文件
if([fm removeItemAtPath: fName error: NULL] == NO){
NSLog(@"file removal failed");
return 6;
}
NSLog(@"All operations were successful");
//显示新创建的文件内容
NSLog(@"%@", [NSString stringWithContentsOfFile: @"newfile2" encoding:NSUTF8StringEncoding error: NULL]);//将文件中的内容读入一个字符串对象,encoding参数指定文件中的字符数据如何表示。可供选择的参数定义在NSString.h头文件中。使用NSUTF8StringEncoding可说明文件包含常规的UTF8ASCII字符。 }
return 0;
}
//在执行复制,重命名或移动操作时,目标文件不能是已存在的,否则操作将失败。