在go语言中实现删除文件中的某些行示例
在go语言中如何从一个文件中删除某些行的数据。
比如:
有些时候,由于一些不可预见的原因,一些被下载的文件包含了更多的数据,比如在文件的开头有额外的HTTP请求头信息。那么,如何去删除这些不需要的信息呢?
解决思路:
解决这个问题的方法类似于将一个文件复制到一个新的文件,只是在复制过程中,不需要的数据被省略掉了。在下面的代码例子中,我们将删除文件开头的不需要的数据,只是忽略这些行。
一旦检测到标记%startHERE,我们才开始读取其余的数据。
注意:
为了简单起见,我们将使用corruptFile常量来模拟一个文件。
对于你自己的生产使用,请取消对这些行的注释,以便从一个实际的文件中读取。
代码示例:
package main
import (
"fmt"
"strings"
)
const corruptFile = `HTTP 2.0 OK
Content-Length :123456
%startHERE
some real data bytes
more bytes`
func main() {
// UNCOMMENT这些行来代替从实际文件中读入。
//if len(os.Args) <= 1 {
// fmt.Printf("USAGE : %s <target_filename> \n", os.Args[0])
// os.Exit(0)
//}
//fileName := os.Args[1]
//fileBytes, err := ioutil.ReadFile(fileName)
//if err != nil {
// fmt.Println(err)
// os.Exit(1)
//}
//lines := strings.Split(string(fileBytes), "\n")
lines := strings.Split(string(corruptFile), "\n")
startPrint := false
for i, line := range lines {
//只在%startHERE之后打印
if equal := strings.Index(line, "%startHERE"); equal > 0 {
startPrint = true
}
if startPrint {
fmt.Println(i, line)
// 而不是打印到屏幕上,这是在这里
// 你要开始向一个新的文件写入,又称复制文件。
//在https://www.socketloop.com/tutorials/golang-simple-file-scaning-and-remove-virus-example,
//它是如何做到的?
}
}
}
希望这对您有所帮助,并祝您编码愉快!
相关文章:
在go中逐行显示带有行号的文本文件示例
https://www.zongscan.com/demo333/96093.html
相关文章