这是代码实现,有个问题是更改某一行的内容后会影响下一个的内容.请大神帮我看一下
```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
```
有疑问加站长微信联系(非本文作者)