在 Swift 中获取远程文件的顶部

Get top of remote file in Swift

通过互联网在多个文件中有一行。我想避免下载整个文件。每个文件可长可短。所需的行通常大约是第 15 行 - 总是不同,但总是在前 500 个字节内。

有没有办法只获取远程文件的开头部分?

然后我可以使用正则表达式模式找到所需的行。

虽然我知道如何在临时文件中下载文件。位置并将其复制到适当的位置,我认为该过程太多且浪费。 这是一个例子:

class func load(url: URL, to localUrl: URL, completion: @escaping () -> ()) {
    let sessionConfig = URLSessionConfiguration.default
    let session = URLSession(configuration: sessionConfig)
    let request = try! URLRequest(url: url, method: .get)

    let task = session.downloadTask(with: request) { (tempLocalUrl, response, error) in
        if let tempLocalUrl = tempLocalUrl, error == nil {
            // Success
            if let statusCode = (response as? HTTPURLResponse)?.statusCode {
                print("Success: \(statusCode)")
            }

            do {
                try FileManager.default.copyItem(at: tempLocalUrl, to: localUrl)
                completion()
            } catch (let writeError) {
                print("error writing file \(localUrl) : \(writeError)")
            }

        } else {
            print("Failure: %@", error?.localizedDescription);
        }
    }
    task.resume()
}

PS。如果您可以包含一种方法来查找以 "abc=xyz" 开头的行,那也会很有帮助,我想要 "xyz".

要只下载部分内容,您需要一个支持发送范围的服务器。要对此进行测试,请发出 HEAD 请求并检查服务器是否以 Accept-Range: bytes header 响应。如果是这样,您可以通过在 GET 请求中添加 header 之类的 Range: bytes=0-499 来请求部分内容,以仅接收最初的 500 个字节。