go写文件后出现大量NUL字符问题解决
作者:ProblemTerminator
本文主要介绍了go写文件后出现大量NUL字符问题解决,由于每次写的时候设置的长度都是64,在某次不足64时,byte切片空余位置被填充为空字符,下面就来介绍一下如何解决
背景
写文件完成后发现:
size明显也和正常的不相等。
看看修改前
buf := make([]byte, 64) buffer := bytes.NewBuffer(buf) // ...其它逻辑使得buffer有值 // 打开即将要写入的文件,不存在则创建 f, err := os.OpenFile(filepath, os.O_CREATE|os.O_TRUNC, 0666) writer := bufio.NewWriter(f) n, err := io.Copy(writer, buffer) err = writer.Flush()
修改后
主要是前两句,替换为
buffer := bytes.NewBuffer([]byte{})
或
buffer := &bytes.Buffer{}
下面的代码一样。
原因
每次写的时候设置的长度都是64,在某次不足64时,byte切片空余位置被填充为空字符;至于到底是文件前、文件中、文件末尾等什么地方出现该字符,就看每次填充到buf是怎么填充的了。
如果不是用io.Copy,比如用的是如下方式进行写操作:
_, err = writer.Write(bs[:n])
则Write方法尽量写成bs[:n],这里的n是本次要写入的实际长度,而不是直接的bs或bs[:],即重点是控制长度,否则都可能产生此问题。
到此这篇关于go写文件后出现大量NUL字符问题解决的文章就介绍到这了,更多相关go出现NUL字符内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!
您可能感兴趣的文章:
- mongodb 数据类型(null/字符串/数字/日期/内嵌文档/数组等)
- 解决Django 在ForeignKey中出现 non-nullable field错误的问题
- django 解决自定义序列化返回处理数据为null的问题
- django模型类中,null=True,blank=True用法说明
- django数据模型中null和blank的区别说明
- 解决Go语言数据库中null值的问题
- 关于MongoTemplate通过id查询为null的问题
- npm install编译时报"Cannot read properties of null (reading ‘pickAlgorithm‘)"错误的解决办法
- npm ERR!Cannot read properties of null(reading 'pickAlgorithm')报错问题解决
- Go json反序列化“null“的问题解决
- 浅析golang如何处理json中的null
- Golang中空的切片转化成 JSON 后变为 null 问题的解决方案