修改写入时直接通过go-pipe写入文件或压缩文件

This commit is contained in:
linxin
2023-04-14 16:35:59 +08:00
parent 8555986af9
commit bd98ac5366

View File

@@ -127,20 +127,30 @@ func writeCoreDumpToFile() error {
} }
defer file.Close() defer file.Close()
// 从标准输入流中读取数据,并将其写入文件中 // 创建一个管道
buf := make([]byte, 1024) reader, writer := io.Pipe()
for { // 将标准输入连接到管道的写入端
n, err := io.ReadAtLeast(os.Stdin, buf, 1) go func() {
if err != nil && err != io.EOF { defer writer.Close()
return err io.Copy(writer, os.Stdin)
} }()
if n == 0 {
break // 从管道的读取端将内容写入文件
} io.Copy(file, reader)
if _, err := file.Write(buf[:n]); err != nil {
return err // buf := make([]byte, 1024)
} // for {
} // n, err := io.ReadAtLeast(os.Stdin, buf, 1)
// if err != nil && err != io.EOF {
// return err
// }
// if n == 0 {
// break
// }
// if _, err := file.Write(buf[:n]); err != nil {
// return err
// }
// }
return nil return nil
} }
func compress() error { func compress() error {
@@ -167,22 +177,7 @@ func compress() error {
if err != nil { if err != nil {
return err return err
} }
io.Copy(writer, os.Stdin)
// Copy the dataStream to the zip file in chunks.
buf := make([]byte, 1024)
for {
n, err := io.ReadAtLeast(os.Stdin, buf, 1)
if err != nil && err != io.EOF {
return err
}
if n == 0 {
break
}
_, err = writer.Write(buf[:n])
if err != nil {
return err
}
}
return nil return nil
} }