分享
这是一个创建于 的主题,其中的信息可能已经有所发展或是发生改变。
这是代码实现,有个问题是更改某一行的内容后会影响下一个的内容.请大神帮我看一下
```go
package main
import (
"bufio"
"errors"
"fmt"
"io"
"os"
"strings"
)
func main() {
fi, err := os.OpenFile("test.txt", os.O_RDWR, os.ModePerm)
if err != nil {
fmt.Println(err)
return
}
defer fi.Close()
reader := bufio.NewReader(fi)
lineCnt := 0
seekP := 0
for {
bs, _, err := reader.ReadLine()
if err == io.EOF {
fmt.Println(errors.New("读取完成"))
break
}
lineCnt = len(bs) + 2 //ReadLine 返回读取的长度不包含换行\r\n
if strings.Contains(string(bs), "hello") {
delBytes := make([]byte, 0) //编辑包含hello的行,需要先在该行写入ascii的127即删除符号,再写入新内容
for i := 0; i < lineCnt; i++ {
delBytes = append(delBytes, 127)
}
fi.WriteAt(delBytes, int64(seekP))
newStr := "hi\r\n"
fi.WriteAt([]byte(newStr), int64(seekP)) //在该行写入新内容
lineCnt = len([]byte(newStr)) //该行长度是新内容的长度
}
seekP += lineCnt
}
}
```
文本文件原始:
```
skdflksdlkfs
sjdfksdfksf
skjdkfj hello skjdfksjdfksjdkf
123
123
123
```
被程序修改后,可以看到修改行的下一行被加入了很多空格
```
skdflksdlkfs
sjdfksdfksf
hi
123
123
123
```
有疑问加站长微信联系(非本文作者)
入群交流(和以上内容无关):加入Go大咖交流群,或添加微信:liuxiaoyan-s 备注:入群;或加QQ群:692541889
关注微信5853 次点击
添加一条新回复
(您需要 后才能回复 没有账号 ?)
- 请尽量让自己的回复能够对别人有帮助
- 支持 Markdown 格式, **粗体**、~~删除线~~、
`单行代码` - 支持 @ 本站用户;支持表情(输入 : 提示),见 Emoji cheat sheet
- 图片支持拖拽、截图粘贴等方式上传