当我们使用 urlsessiondownloadtask 下载文件时,会有一个临时文件,其中按块保存数据。 有什么办法可以将数据块不保存在磁盘上并将其存储在内存中吗? 或者有什么办法可以修改数据流? 问题是我需要加密应用程序中的所有数据。
您可以使用
URLSessionDownloadTask
,而不是使用 URLSessionDataTask
,它允许您按块处理传入数据。这样,您可以在接收数据时对其进行加密,然后将其写入磁盘或保留在内存中。
let url = URL(string: "https://example.com/file")!
let task = URLSession.shared.dataTask(with: url) { (data, response, error) in
if let data = data {
// Encrypt the data here
let encryptedData = encrypt(data)
// Do something with encryptedData
// ...
}
}
task.resume()
如果您无法避免使用
URLSessionDownloadTask
,另一种方法是等到下载完成并创建临时文件。然后,读取文件,对其进行加密,并将加密的数据保存回磁盘。如果您正在处理大文件或具有强制要求即时加密的严格安全要求,则此方法可能不适合。