swift文件读取

本文介绍了iOS中App的文件管理,包括Documents、tmp和Library/Caches目录的用途,以及如何读取、创建、删除文件和目录。通过FileManager对象,可以实现动态管理文件,如读取图片、文本文件,以及复制、移动和删除文件。同时,文章讲解了如何检查文件是否存在,以及列出目录下的文件列表。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

iOS系统只允许特定文件夹下的文件可以新增、修改、删除。当用户下载并安装了App后,系统会为该App创建专属的主目录(Home Directory),并会自动创建三个目录,功能如下:
1、Documents:存储用户自行创建的文件数据,比如执行时创建的数据(图片、文档)、数据库,都存在此目录下。
2、tmp:存储暂时性文件,例如执行应用程序是,经常要创建一些中间文件,这些文件就放在此目录。
3、Library/Caches:存储缓存文件,最长存储的是浏览网页时所下载的文件,下次浏览时可加快速度。
tmp和Library/Caches都是春初暂时性文件,不同之处在于当设备存储空间不足时,iOS会主动清除Libary/Caches的数据以释放存储空间,而tmp目录中的数据必须有开发者自行删除。

读取项目中的图片文件
语法:imageTset.image=UIImage(named:“图片名称”)

读取项目中其他类型的文件
1、首先要获取文件的路径
var pathStr:NSString=Bundle.main.path(forResource: “titleName”, ofType: “txt”)! as NSString
2、接着用NSData来读取数据
var titleData:NSData?=NSData(contentsOfFile: pathStr as String)
3、NSData获取的数据是二进制数据,需要用NSString转换为字符串
var titleString:NSString=NSString(data: titleData as! Data, encoding: String.Encoding.utf8.rawValue)!

项目动态文件
程序中动态管理文件大多是通过FileManager对象来实现
1、创建文件或目录
var fileManager:FileManager=FileManager()
2、获取App的主目录Documents文件夹的路径:NSHomeDirectory()函数会返回主目录的路径,只要在其后面加上“/Documents/”字符串即可。
var filePath:String=NSHomeDirectory()+"/Documents/"
3、新增文件,使用createFileAtPath方法
语法:NSFileManager 对象.createFile(atPath:文件路径,contents:文件内容,attributes:文件属性)
文件路径:新增文件的完整路径
文件内容:新增文件同事加入的内容,数据类型为NSData。
文件属性:设置读写等属性。
如果文件内容和属性都设置为“nil”,则新增一个可擦鞋的空文件。
新增文件时,如果新增路径已存在相同名称的文件,则原有文件会被新文件取代,原有文件的内容会取消。
var fileName:String=filePath+“text1.txt”
fileManager.createFile(atPath: fileName, contents: titleData as Data?, attributes: nil)
4、新增目录,使用ceateDirectoryAtPath方法
语法:NSFileManager 对象.createDirectory(atPath:目录路径,withIntermediateDirectories:布尔值,attributes:文件属性,error:错误处理)
var dirName=filePath+“text”
do {
try fileManager.createDirectory(atPath: dirName, withIntermediateDirectories: true, attributes: nil)
print(“文件夹创建成功”)
} catch let error {
print(error.localizedDescription)
print(“文件夹创建失败”)
}
参数withIntermediateDirectories是布尔值,其值为true时,会自动创建不存在的中间目录;其值为false时,只要创建目录过程中有不存在的目录路径或要新增的目录已经存在,就会停止创建并返回创建失败。例如要创建的目录路径为“dir/root/test1”,中间的root目录不存在,若设置“withIntermediateDirectories:true”就会先创建root目录再创建test1目录;若设置“withIntermediateDirectories:false”就返回创建失败。

检查文件是否存在、读写文本文件
检查文件存在
语法:NSFileManager 对象.fileExists(atPath:文件路径)
fileManager.fileExists(atPath: fileName)
检查路径是否存在,把文件名换成路径

读写
swift读取和写入文本文件的方式非常简单,甚至不必要使用NSFileManager对象,而是使用NSString的构造函数或方法即可。
读取
语法:返回值=NSString(contentsOfFile:文件路径,encoding:编码方式,error:错误处理)
编码方式,设置返回值的编码类型,通常使用“utf8”,返回类型是NSString
do{
var readStr:NSString?=try NSString(contentsOfFile: fileName, encoding: String.Encoding.utf8.rawValue)
}catch let error {
print(error.localizedDescription)
print(“文件夹创建失败”)
}

写入
语法:字符串变量.writeToFile(文件路径,atomically:布尔值,encoding:编码方式,error:错误处理)
atomically参数值为true,系统会先将数据写入一个辅助文件,再讲辅助文件更名为制定文件;参数若为false,系统会直接将数据写入制定文件。
do{
try filePath.write(toFile: fileName, atomically: false, encoding: String.Encoding(rawValue: String.Encoding.utf8.rawValue))
}catch let error {
print(error.localizedDescription)
print(“文件夹创建失败”)
}

文件列表
列出制定目录下所有文件和目录也是常用的功能,利用NSFileManager对象的subpathsAtPath方法可获取制定目录下所有文件和目录的名称,文件和目录名称时存放于数组中返回的,只要使用for训话即可将其列出。

获取制定目录下所有文件和目录名称
语法:数组名.NSFileManager 对象.subpaths(atPath:目录路径)
var fileArray:Array?=fileManager.subpaths(atPath: fileName)

管理文件 和目录:复制、移动、删除
复制文件的指令与复制目录相同,如果传入的参数是文件路径,就复制文件;传入的是目录路径,就复制目录。移动、删除文件或目录其功能也一样,操作对象视传入的参数而定。

复制
语法:FileManager 对象.copyItem(atPath:原始路径,目标路径,error:错误处理)
do
{
try fileManager.copyItem(atPath: fileName, toPath: fileName)
}
catch let error {
print(error.localizedDescription)
print(“文件夹创建失败”)
}

移动文件
语法:FileManager 对象.moveItem(atPath:原始路径,目标路径,error:错误处理)
do
{
try fileManager.moveItem(atPath: fileName, toPath: fileName)
}
catch let error {
print(error.localizedDescription)
print(“文件夹创建失败”)
}

删除文件
语法:FileManager 对象.removeItem(atPath:文件路径,error:错误处理)
do
{
try fileManager.removeItem(atPath: fileName)
}
catch let error {
print(error.localizedDescription)
print(“文件夹创建失败”)
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值