代码之家  ›  专栏  ›  技术社区  ›  Yuma Technical Inc.

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

  •  0
  • Yuma Technical Inc.  · 技术社区  · 6 年前

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

    有没有办法只获取远程文件的顶部?

    然后我可以使用regex模式来查找所需的行。

    虽然我知道如何在临时下载文件。把它复制到一个合适的位置,我觉得这个过程太多太浪费了。 这是一个例子:

    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()
    }
    

    另外,如果您可以包括一个方法来查找以“abc=xyz”开头的行,在这里我需要“xyz”,这也是很有帮助的。

    1 回复  |  直到 6 年前
        1
  •  0
  •   Gereon    6 年前

    要只下载部分内容,您需要一个支持发送范围的服务器。要测试这个,请 HEAD 请求并检查服务器是否用 Accept-Range: bytes 标题。如果是这样,您可以通过添加类似于 Range: bytes=0-499 给你的 GET 请求只接收最初的500字节。