Swift文件与IO操作

ops/2024/10/21 10:15:00/

在Swift中,我们可以通过文件路径或URL进行文件的读写操作。文件路径是文件在文件系统中的位置,可以是绝对路径或相对路径。URL是统一资源定位符,可以指向本地文件或远程资源。

  1. 从文件路径或URL获取文件内容:
    swift">let filePath = "/path/to/file.txt"if let content = try? String(contentsOfFile: filePath) {print(content)
    } else {print("Failed to read the file.")
    }let fileURL = URL(fileURLWithPath: filePath)do {let content = try String(contentsOf: fileURL)print(content)
    } catch {print("Failed to read the file.")
    }
    

  2. 写入文件:
    swift">let content = "Hello, World!"let filePath = "/path/to/file.txt"
    do {try content.write(toFile: filePath, atomically: true, encoding: .utf8)print("File written successfully.")
    } catch {print("Failed to write to the file.")
    }let fileURL = URL(fileURLWithPath: filePath)
    do {try content.write(to: fileURL, atomically: true, encoding: .utf8)print("File written successfully.")
    } catch {print("Failed to write to the file.")
    }
    

  3. 序列化与反序列化:
    swift">struct Person: Codable {let name: Stringlet age: Int
    }let person = Person(name: "John", age: 30)// 序列化为JSON数据
    do {let jsonData = try JSONEncoder().encode(person)// 写入文件let filePath = "/path/to/person.json"try jsonData.write(to: URL(fileURLWithPath: filePath))print("JSON data written successfully.")
    } catch {print("Failed to serialize the object.")
    }// 反序列化为对象
    let fileURL = URL(fileURLWithPath: filePath)
    do {let jsonData = try Data(contentsOf: fileURL)let decodedPerson = try JSONDecoder().decode(Person.self, from: jsonData)print(decodedPerson)
    } catch {print("Failed to deserialize the object.")
    }
    

总结:通过文件路径或URL,我们可以实现文件的读写操作。同时,通过序列化与反序列化,我们可以将对象转化为数据,并存储到文件中,或者从文件中读取数据并转化为对象。这些操作都需要进行错误处理,以防止出现异常情况。


http://www.ppmy.cn/ops/7529.html

相关文章

字位扩展后各组芯片的地址范围

https://blog.csdn.net/weixin_51340156/article/details/112137490 原理 由下图知字位扩展每组芯片地址范围同字扩展 例题 区分

音频变速python版

音频变速 如何能在不改变音频其他特点的情况下,只改变语速呢? 有几个python的库可以实现该功能,下面一一介绍。 pydub库 首先,确保安装了pydub和ffmpeg。 下面是一个简单的Python脚本,展示如何改变音频的播放速度&a…

Golang | Leetcode Golang题解之第36题有效的数独

题目: 题解: func isValidSudoku(board [][]byte) bool {var rows, columns [9][9]intvar subboxes [3][3][9]intfor i, row : range board {for j, c : range row {if c . {continue}index : c - 1rows[i][index]columns[j][index]subboxes[i/3][j/3]…

抓取电商产品数据的方法|电商平台商品详情数据|批量上架|商品搬家|电商封装API数据采集接口更高效安全的数据采集

大量级电商数据采集时使用电商API接口有以下优势: 1. 数据准确性:通过电商API接口获取数据,可以保证数据的准确性和实时性,避免了手动采集可能出现的错误和延迟。 2. 自动化采集:API接口可以实现自动化的数据获取和更…

zabbix 自动发现与自动注册 部署 zabbix 代理服务器

zabbix 自动发现(对于 agent2 是被动模式) zabbix server 主动的去发现所有的客户端,然后将客户端的信息登记在服务端上。 缺点是如果定义的网段中的主机数量多,zabbix server 登记耗时较久,且压力会较大。1.确保客户端…

java-单列集合List详解

一、List概述 ​​​​​​​List 接口继承自 Collection 接口。这意味着所有 List 类型的对象都是 Collection 类型的对象,它们共享 Collection 接口中定义的所有方法。 List集合的特点: 1、有序:存和取得元素顺序一致 2、有索引&#xf…

[git] 使用git和github工作思路和经验

上传到github之前,在本地把commit整理好 有时候在本地修改代码时,会涉及到一些拼写错误和编译错误,这个过程可能反复操作很久,因此会产生很多意义不大的commit,如果不对这些commit进行合并就直接上传到github上对应的…

公园高速公路景区校园IP网络广播音柱SIP音柱

公园高速公路景区校园IP网络广播音柱SIP音柱 适用于学校、车站、教堂、工厂、仓库、公园停车场及露天市场高速公路等场所播放录制语音文件或背景音乐节目,专业一体化音箱设计,高强度防水设计,符合IP54防护等认证,数字化产品&…