如何在下载文件时打印字节?-golang

我想知道是否可以计算和打印下载文件时下载的字节数。


out, err := os.Create("file.txt")

    defer out.Close()

    if err != nil {

        fmt.Println(fmt.Sprint(err) )


        panic(err)

    }

    resp, err := http.Get("http://example.com/zip")

    defer resp.Body.Close()

    if err != nil {

        fmt.Println(fmt.Sprint(err) )

        panic(err)

    }


    n, er := io.Copy(out, resp.Body)

    if er != nil {

        fmt.Println(fmt.Sprint(err) )

    }

    fmt.Println(n, "bytes ")


临摹微笑
浏览 197回答 3
3回答

HUWWW

stdlib 现在提供类似 jimt 的内容PassThru:io.TeeReader。它有助于简化一些事情:// WriteCounter counts the number of bytes written to it.type WriteCounter struct {    Total int64 // Total # of bytes transferred}// Write implements the io.Writer interface.  // // Always completes and never returns an error.func (wc *WriteCounter) Write(p []byte) (int, error) {    n := len(p)    wc.Total += int64(n)    fmt.Printf("Read %d bytes for a total of %d\n", n, wc.Total)    return n, nil}func main() {    // ...        // Wrap it with our custom io.Reader.    src = io.TeeReader(src, &WriteCounter{})    // ...}
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Go