Skip to content

Commit 93a5f11

Browse files
committed
add copy with change buffer size
1 parent c650bd9 commit 93a5f11

File tree

2 files changed

+18
-2
lines changed

2 files changed

+18
-2
lines changed

ioutils.go

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -113,8 +113,12 @@ func WriteBytes(v io.Writer, b []byte, divide string) error {
113113
const copyBufferSize = 512
114114

115115
func Copy(w io.Writer, r io.Reader) (int, error) {
116+
return CopyPack(w, r, copyBufferSize)
117+
}
118+
119+
func CopyPack(w io.Writer, r io.Reader, size int) (int, error) {
116120
n := 0
117-
buff := make([]byte, copyBufferSize)
121+
buff := make([]byte, size)
118122
for {
119123
m, err1 := r.Read(buff)
120124
if m < 0 {
@@ -128,7 +132,7 @@ func Copy(w io.Writer, r io.Reader) (int, error) {
128132
if err2 != nil {
129133
return 0, fmt.Errorf("writer err: %w", err2)
130134
}
131-
if m < copyBufferSize || errors.Is(err1, io.EOF) {
135+
if m < size || errors.Is(err1, io.EOF) {
132136
return n, nil
133137
}
134138
}

ioutils_test.go

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -116,3 +116,15 @@ func TestUnit_Copy(t *testing.T) {
116116
casecheck.NoError(t, err)
117117
casecheck.Equal(t, 521, len(bb))
118118
}
119+
120+
func TestUnit_CopyPack(t *testing.T) {
121+
b := make([]byte, 521, 1024)
122+
in := bytes.NewBuffer(b)
123+
out := bytes.NewBuffer(nil)
124+
n, err := CopyPack(out, in, 1)
125+
casecheck.NoError(t, err)
126+
casecheck.Equal(t, 521, n)
127+
bb, err := io.ReadAll(out)
128+
casecheck.NoError(t, err)
129+
casecheck.Equal(t, 521, len(bb))
130+
}

0 commit comments

Comments
 (0)