swift 11.1 文件管理 NSFileManager

1简介

(1)文件用于对数据进行持久性存储(单例模式)

(2)两个类: NSFileManager文件管理类
NSFileHandle文件句柄类(见下一节)

(3)NSFileManager的作用是对文件自身进行管理(创建、移动、删除、拷贝)

2用法

(1):创建文件管理类对象(单例设计模式)

let manager = NSFileManager.defaultManager()

(2)判断文件/目录是否存在:

fileExistsAtPath(<#T##path: String##String#>)

(3)判断文件/目录是否存在,同时判断是否是目录:
isDirectory判断是否是目录

fileExistsAtPath(<#T##path: String##String#>, isDirectory: <#T##UnsafeMutablePointer<ObjCBool>#>

(4)浅度遍历: 只返回本路径下的所有文件和文件夹

let path = "/Users/Lwy/Desktop/"
let direcPath = path + "第三方库"

//fileExistsAtPath判断文件是否存在
if manager.fileExistsAtPath(direcPath) {
    
    let array = try! manager.contentsOfDirectoryAtPath(direcPath)
    print(array)
}
else {
    print("该路径下不存在这个文件")
}
//注意:.DS_Store为NSFileManager系统提供的

(5)深度遍历:能遍历本路径下所有的目录和文件已经所有的目录的子目录和子目录文件

if manager.fileExistsAtPath(direcPath) {
    
    let array = try! manager.subpathsOfDirectoryAtPath(direcPath)
    print(array)
}
else {
    print("该文件不存在")
}

(6)创建文件:
manager.createFileAtPath(<#T##path: String##String#>, contents: <#T##NSData?#>, attributes: <#T##[String : AnyObject]?#>)

1:返回值BOOL返回文件是否创建成功,不成功返回false,成功返回true
2:path需要创建的文件路径;contents文件内容;attributes:设置创建的文件的类型,如果为nil就会创建一个默认类型
3:文件不存在的时候新建一个文件。如果文件已经存在,替换原来的文件
4:NSData 是二进制数据
可以把很多类型的数据都可以转换成二进制数据 如:文字、图片、视频、音频 (数据本地化实质,就是将数据转化成NSData,然后存到文件中)

let createFilePath = path + "我是新文件.txt"
if manager.fileExistsAtPath(createFilePath) {
    
    print("该路径下已经存在同名文件 文件创建失败")
}
else {
    
    //NSData文件的单位 二进制
    let string = "枯藤老树昏鸦,小桥流水人家"
    //【重点】将字符串转化成NSData
    let data = string.dataUsingEncoding(NSUTF8StringEncoding)
    
    let isSuccess = manager.createFileAtPath(createFilePath, contents: data!, attributes: nil)
    print(isSuccess ? "文件创建成功" : "文件创建失败")
}

(7):创建文件夹(目录):
createDirectoryAtPath(<#T##path: String##String#>, withIntermediateDirectories: <#T##Bool#>, attributes: <#T##[String : AnyObject]?#>)

第二个参数:(注意,参数使用错误程序可能会崩溃)

是否创建中间目录.如果设置成true就可以去创建我们需要的中间目录,如果是false不会创建中间目录。其余参数见上

let directoryPath = path + "movies/科幻/食人鱼"
if manager.fileExistsAtPath(directoryPath) {
    print("文件夹已存在创建失败")
}
else {
    do {
     try manager.createDirectoryAtPath(directoryPath, withIntermediateDirectories: true, attributes: nil)
       print("文件夹创建成功")
    }catch {
        print("文件夹创建失败\(error)")
    }
    
}

(8)文件的拷贝 (文件、文件夹的拷贝都是同一个方法)
manager.copyItemAtPath(<#T##srcPath: String##String#>, toPath: <#T##String#>)
1:第一个参数是原路径,第二个参数是拷贝后的路径(目的路径)
2:文件的拷贝、移动都是对文件重命名的过程 ,所以新路径必须是完整路径 (带有文件名称和后缀)

//文件/文本有后缀
let createFilePath = path + "我是新文件.txt"
let directoryPath = path + "movies/科幻/食人鱼/副本.txt"

do {
   try manager.copyItemAtPath(createFilePath, toPath: directoryPath)
    print("文件拷贝成功")
}catch {
    print("文件拷贝失败\(error)")
}


//文件夹没有后缀
let path1 = path + "movies"
let path2 = path + "图片/新文件夹"

do {
    try manager.copyItemAtPath(path1, toPath: path2)
    print("文件夹拷贝成功")
}catch {
    print("文件夹失败\(error)")
}

(9)文件移动(剪切) --- 文件、文件夹
moveItemAtPath(<#T##srcPath: String##String#>, toPath: <#T##String#>)

let movePath = path + "movies"
let moveToPath = path + "图片/表情包/未命名文件夹"
do {
    try manager.moveItemAtPath(movePath, toPath: moveToPath)
    print("文件(夹)移动成功")
}catch {
    print("文件(夹)移动失败\(error)")
}

(10)获取一个文件/目录的属性
attributesOfItemAtPath(<#T##path: String##String#>)

var dict = try? manager.attributesOfItemAtPath(path)
print(dict)

(11)删除目录或文件:
removeItemAtPath(<#T##path: String##String#>)

do {
    try manager.removeItemAtPath(moveToPath)
    print("删除成功")
}catch {
    print("删除失败\(error)")
}
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 204,189评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,577评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,857评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,703评论 1 276
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,705评论 5 366
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,620评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,995评论 3 396
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,656评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,898评论 1 298
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,639评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,720评论 1 330
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,395评论 4 319
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,982评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,953评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,195评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 44,907评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,472评论 2 342

推荐阅读更多精彩内容

  • *面试心声:其实这些题本人都没怎么背,但是在上海 两周半 面了大约10家 收到差不多3个offer,总结起来就是把...
    Dove_iOS阅读 27,121评论 29 470
  • 文件操作 NSFileManager 1.NSFileManager 专门负责文件/文件夹的管理操作,包括创建/删...
    Jackjun阅读 2,042评论 0 1
  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 134,594评论 18 139
  • FileManager 是 Foundation 框架中用来管理和操作文件、目录等文件系统相关联内容的类。 1、路...
    萧过阅读 3,376评论 0 0
  • 时光如白驹过隙,一转眼,大学毕业了,再一转眼,工作两年了。毕业后,我意识到理财的必要性,本着亡羊补牢、为时未晚的态...
    想fly的自由落体阅读 163评论 0 1