如何在Swift InputStream中实现skip()方法

问题描述 投票:0回答:2

我正在尝试实现一种可以对输入流执行以下操作的方法:

 /**
* 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 中实现这一目标?谢谢。

swift
2个回答
0
投票

按照@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
}}

0
投票

@Max Mur,只是想知道这个函数实际上是用来做什么的。我可以知道这个分机呼叫哪里吗?

© www.soinside.com 2019 - 2024. All rights reserved.