Rap*_*ael 5 inputstream stream binary-data swift
在Swift 3.x中,我们通常使用Data
; 从中你可以生成大多数其他重要类型,并且它上面有很多有用的功能.
但是我如何创建Data
一个InputStream
?有一个很好的方式吗?
Rap*_*ael 13
我找不到一个好方法.我们可以围绕不安全的东西创建一个很好的包装器:
extension Data {
init(reading input: InputStream) throws {
self.init()
input.open()
defer {
input.close()
}
let bufferSize = 1024
let buffer = UnsafeMutablePointer<UInt8>.allocate(capacity: bufferSize)
defer {
buffer.deallocate()
}
while input.hasBytesAvailable {
let read = input.read(buffer, maxLength: bufferSize)
if read < 0 {
//Stream error occured
throw input.streamError!
} else if read == 0 {
//EOF
break
}
self.append(buffer, count: read)
}
}
}
Run Code Online (Sandbox Code Playgroud)
查找完整的代码与测试这里.
归档时间: |
|
查看次数: |
9120 次 |
最近记录: |