我正在尝试实现一种可以对输入流执行以下操作的方法:
/**
* Skips n bytes of input.
* @param n the number of bytes to skip
* @return the actual number of bytes skipped.
*/
func skip(n: Int) throws-> Int {
let res = inputStream.skip(n) //Value of type 'InputStream' has no member 'skip'
pos_ += res
return res
}
如何在 Swift 中实现这一目标?谢谢。
按照@Cristlik的建议,我决定添加一个扩展来读取和丢弃字节:
extension InputStream {
func skip(inputStream: InputStream, n: Int) throws-> Int {
var remaining = n
var nr = 0
if n <= 0 {
return 0
}
let maxSkipBufferSize = 2048
let size = min(maxSkipBufferSize, remaining)
var skipBuffer = [UInt8](repeating: 0, count: size)
while remaining > 0 {
nr = inputStream.read(&skipBuffer, maxLength: min(size, remaining))
if (nr < 0) {
break
}
remaining -= nr
}
return n - remaining
}}
@Max Mur,只是想知道这个函数实际上是用来做什么的。我可以知道这个分机呼叫哪里吗?