From: qydysky Date: Sun, 28 May 2023 09:19:13 +0000 (+0800) Subject: fix X-Git-Tag: v0.27.17 X-Git-Url: http://127.0.0.1:8081/?a=commitdiff_plain;h=86f90487db99cfecf4d463ea97fe5f9ac8a3de54;p=part%2F.git fix --- diff --git a/file/FileWR.go b/file/FileWR.go index 8959087..21570a0 100644 --- a/file/FileWR.go +++ b/file/FileWR.go @@ -9,8 +9,8 @@ import ( "path/filepath" "strings" "sync" + "time" - l "github.com/qydysky/part/limit" encoder "golang.org/x/text/encoding" ) @@ -380,19 +380,29 @@ func newPath(path string, mode fs.FileMode) { func transferIO(r io.Reader, w io.Writer, byteInSec int64) (e error) { if byteInSec > 0 { - limit := l.New(1, "1s", "-1s") - defer limit.Close() + ticker := time.NewTicker(time.Second) + defer ticker.Stop() for buf := make([]byte, byteInSec); true; { if n, err := r.Read(buf); n != 0 { - w.Write(buf[:n]) + if _, werr := w.Write(buf[:n]); werr != nil { + return err + } } else if err != nil { - return err + if !errors.Is(err, io.EOF) { + return err + } else { + return nil + } } - limit.TO() + <-ticker.C } } else if _, err := io.Copy(w, r); err != nil { - return err + if !errors.Is(err, io.EOF) { + return err + } else { + return nil + } } return nil }