美文网首页
用Swift的FileHandle进行文件写入

用Swift的FileHandle进行文件写入

作者: 风海铜锣君 | 来源:发表于2021-07-07 17:03 被阅读0次

在项目中我们经常有针对二进制或者文本文件进行局部读写、追加数据等需求。在C语言里用fopen系列函数就能解决。而在Swift语言里可以通过FileHandle来处理。

下面通过代码示例来讲解下FileHandle的用法。

首先先定义一个文件路径,作为测试文件

let path = NSSearchPathForDirectoriesInDomains(.documentDirectory, .userDomainMask, true)[0] + "test.txt"

接下来判断文件是否存在,不存在就创建。

注意:由于FileHandle的创建要求文件必须存在,这和C语言的fopen不同,C语言的fopen可以负责在文件不存在时创建,而FileHandle不行。

if !FileManager.default.fileExists(atPath: path) {
    FileManager.default.createFile(atPath: path, contents: nil, attributes: nil)
}

接下来,我们创建一个FileHandle

let fileHandle = FileHandle(forWritingAtPath: path)!

简化起见我这里用“!强制类型为非空,实际开发中请用if分支,不再赘述。

将文件指针移动到文件末尾。

fileHandle.seekToEndOfFile()

进入写入数据的阶段,我这里写入字符串hello, world!

fileHandle.write("hello, world!".data(using: .utf8)!)

最后,记得要关闭文件。

try? fileHandle.close()

文件关闭后,读一下现在文件里的数据并且打印出来。

if let content = try? String(contentsOfFile: path, encoding: .utf8) {
    print(content)
}

如果是首次运行,打印结果是hello, world!,如果再次运行,结果会变成hello, world!hello, world!,依此类推。

完整代码示例:

let path = NSSearchPathForDirectoriesInDomains(.documentDirectory, .userDomainMask, true)[0] + "test.txt"
if !FileManager.default.fileExists(atPath: path) {
    FileManager.default.createFile(atPath: path, contents: nil, attributes: nil)
}

let fileHandle = FileHandle(forWritingAtPath: path)!
fileHandle.seekToEndOfFile()
fileHandle.write("hello, world!".data(using: .utf8)!)
try? fileHandle.close()

if let content = try? String(contentsOfFile: path, encoding: .utf8) {
    print(content)
}

其它分享:

2021年遭遇苹果审核2.3.1的开发过审经历

4.2、4.3、Other和封号相关的技术性应对方案

如何有效的向苹果哭诉


移动开发者的小伙伴们可以加我的公众号风海铜锣的加群菜单栏中申请加群完成加群申请,一起共同进步。

相关文章

  • 用Swift的FileHandle进行文件写入

    在项目中我们经常有针对二进制或者文本文件进行局部读写、追加数据等需求。在C语言里用fopen系列函数就能解决。而在...

  • 利用GCD实现高效的文件读取

    需求思路 读取时候可以并发进行,读取后要返回读取状态。 写入文件时候不可以读取,并且文件写入时不可以并发的进行写入...

  • 文件夹操作大全(swift)

    iOS开发遇到读文件,写文件等,对文件和文件夹的操作,这时就可以使用FileManager,FileHandle等...

  • python多进程文件操作的一些理解

    如果多进程都对同一个文件进行写入,那么就会出现多个进程争夺资源的问题。会使写入的文件内容错乱。1. 写入文件: 同...

  • 用python获取当前文件夹下的所有csv文件

    昨天我们用python将所有csv文件写入数据库,进行数据保存供后续提取分析用,程序中有段代码是获取当前文件夹下的...

  • python读取/写入list/dict对象为txt/json文

    将list对象写入txt文件 不能直接将list或dict对象进行写入,会出现typeError。 将txt文件读...

  • swift 11.2 文件管理 NSFileHandle

    1:简介 (1)NSFileHandle的作用是对文件内容进行操作(内容读取、写入操作),(字符串的写入 和文件内...

  • openssl 对称性加密/解密

    计算文件的HASH(生成摘要) 例子 生成文件摘要并写入文件 生成非对称性加密用的公钥与私钥 对key进行非对称性...

  • Python写入Excel

    xlsxwriterxlrd:用于读取 Excel 文件;xlwt:用于写入 Excel 文件;xlutils:用...

  • go 写文件操作

    一次将全部内容写入文件 将文本数据逐行写入文件 如果您将文件的行放在单独的变量、数组中,或者想在写入一行之前进行一...

网友评论

      本文标题:用Swift的FileHandle进行文件写入

      本文链接:https://www.haomeiwen.com/subject/wkxaultx.html