一、介绍
- FileHandle的作用就是对文件的内容进行操作;内容读取、写入操作,字符串的写入和文件内容的读取,都是对字符串操作
- 对文件操作之前 ,必须先打开文件; 对文件操作结束 ,可以关闭文件。
- 配合FileManager使用
二、使用方法
1. 初始化方法
/// 文件路径
private let csvFilePath = NSSearchPathForDirectoriesInDomains(.cachesDirectory, .userDomainMask, true).first?.appending("/TestCSVFile.csv")
guard let csvFilePath = csvFilePath else { return }
//只读
let readHandle = FileHandle.init(forReadingAtPath: csvFilePath)
//只写
let writeHandle = FileHandle.init(forWritingAtPath: csvFilePath)
//读写
let updateHandle = FileHandle.init(forUpdatingAtPath: csvFilePath)
2. 从文件读取内容
// 读取文件中一定长度的内容
// UTF8编码汉字占3个字节 swift语言中汉字字符占1个字节
guard let data1 = readHandle?.readData(ofLength: 9) else { return }
//【重点】将NSData的数据转换成字符串
let readStr1 = String.init(data: data1, encoding: .utf8)
print(readStr1)
// 第二次读取接着上一次读到位置开始往后读
guard let data2 = readHandle?.readDataToEndOfFile() else { return }
let str2 = String.init(data: data2, encoding: .utf8)
print(str2)
3. 重新设置文件的偏移位置
// 设置偏移量
readHandle?.seek(toFileOffset: 0)
guard let data3 = readHandle?.readData(ofLength: 3) else {
return
}
let str3 = String.init(data: data3, encoding: .utf8)
print(str3)
// 移动到最后
readHandle?.seekToEndOfFile()
4. 写入文件
可以从头开始写,也可以设置一定偏移量,从偏移量位置开始写
// 写入文件
let writeStr = "Test"
guard let writeData1 = writeStr.data(using: .utf8) else { return }
writeHandle?.write(writeData1)
//设置偏移位置在文件所有内容之后
writeHandle?.seekToEndOfFile()
//追加内容
writeHandle?.write(writeData1)
5. 清除文件内容
// 清除文件的内容
// 清除到指定位置
writeHandle?.truncateFile(atOffset: 0)