1 回答

TA貢獻(xiàn)1820條經(jīng)驗(yàn) 獲得超10個(gè)贊
包裹讀者。算在包裝紙里。
type wrapper struct {
io.Reader
n int
}
func (w *wrapper) Read(p []byte) (int, error) {
n, err := w.Reader.Read(p)
w.n += n
return n, err
}
像這樣將它插入您的應(yīng)用程序:
args = append(args, "-")
cmd := exec.Command("exiftool", args...)
stdout, err := cmd.StdoutPipe()
if err != nil {
return
}
reader := &wrapper{Reader: resp.Body}
cmd.Stdin = reader
err = cmd.Run()
if err != nil {
return
}
fmt.Println(reader.n) // prints number of bytes read.
因?yàn)?exec 包在從響應(yīng)復(fù)制到標(biāo)準(zhǔn)輸入時(shí)使用緩沖區(qū),所以 bufio.Reader 不太可能提供好處。如果有一些好處,請使用這些選項(xiàng)之一;
reader := &wrapper{Reader: bufio.NewReader(resp.Body)} // Option 1
cmd.Stdin = bufio.NewReader(reader) // Option 2
- 1 回答
- 0 關(guān)注
- 93 瀏覽
添加回答
舉報(bào)