当前位置: 代码迷 >> 综合 >> Swfit 读取文件路径/信息(二)
  详细解决方案

Swfit 读取文件路径/信息(二)

热度:27   发布时间:2023-11-18 04:05:01.0

功能描述:主要针对在IOS开发时,难免需要读取手机里的文件信息,那么此篇讲如何利用沙盒的方式,读取到Documents下的文件,以及文件的重要字节信息。

如果你还未导入需要读取的文件,如果你需要用MAC电脑把文件放入手机程序里,可以参考我这篇文章(如何在MAC电脑上把文件导入到程序里)

一:获取手机文件中的路径目录

let documentPaths = NSSearchPathForDirectoriesInDomains(FileManager.SearchPathDirectory.documentDirectory,FileManager.SearchPathDomainMask.userDomainMask, true)//这个就是沙盒文件下Documents的路径,你的文件存储就放到这。let documnetPath = documentPaths[0]

二:读取该路径下的文件名

let fm = FileManager.defaultlet contents = try! fm.contentsOfDirectory(atPath: documnetPath)print(contents)//循环出该路径下的文件,因为可能不只一个文件,所以全要显示到列表上。如果你要在此做限制也可以。如:仅限制尾缀.pem的文件if(contents.count > 0){
    for (index,value) in contents.enumerated() {
    print(index,value)//我的UI数据model层let model1 = TimeModel()model1.time = value//把model赋值给数组projectList.append(model1)}}else{
    //如果手机中没有任何一个文件,就提示客户,需要放入文件才可以进行读取WHToast.showMessage("Please import at least one key file!", originY: 500, duration: 2, finishHandler: {
    })return}

三:此时,我们Documents下的所有文件列表都读取到了。现在,就进行读取你选择了那个文件名,就读取到那个文件里的字符信息。

这个是我的Model层,model.name是我的文件名
let t = model as! TimeModel
//依然再次读取到路径
let home = NSHomeDirectory() as NSString;
//链接到Documents下的路径
let docPath = home.appendingPathComponent("Documents") as NSString;
//链接到路径Documents/文件名(如:vice.demo.www.a2562264dz589/Documents/recproject.bin)
//这个就是完整的选择的文件名路径
let filePath = docPath.appendingPathComponent(t.name!);
//fileManager读取
let fileManager = FileManager.default
let exist = fileManager.fileExists(atPath: filePath)
if exist{
    //链接到文件let  content = fileManager.contents(atPath: filePath)let dat:Data = (content)!//显示文件里的字节数据let dict = String(data: dat, encoding: String.Encoding.utf8)print(dict as Any)//如:“82:56:dd:96:0e:d4:51:57:64:ea:48:96:08:72:ef”//如:密钥文件“-----BEGIN EC PRIVATE KEY-----\r\nMHIBQJmCOCNe/Vz9uCVt2WDtg0/oAoGCCqGSM49\r\nAwEHoUQDQgAEbsxDt2TpY3AujSbpqkVTMzTaw4BaFv8mroE\r\nhUoudBA0igG5MbtQmlAdes2Bpw==\r\n-----END EC PRIVATE”此时。最后一步。进行存储或发生到设备BleManage.shared.writes(dict, for: self.resetCharater, periperalData: self.bleModel?.peripheral)
}

各位如果还有不懂的可以关注留言问我,希望能够帮助到您,一起努力,相互学习知识,长路漫漫,重在于一点一滴的积累。bay…