我正在编写一个命令行工具来帮助我构建我的项目。我需要能够向文件添加一行文本,但是要添加到特定位置。这是一个例子:
我有这个routes.js
文件:
router.map({
'/home':{
name: 'home',
component: Home
},
'/about':{
name: 'about',
component: About
},
'/quote':{
name: 'quote',
component: Quote
}
})
现在我想运行一个命令来创建一个新路由my-cli generate route ExampleRoute
我希望能像这样编写路线:
router.map({
'/home':{
name: 'home',
component: Home
},
'/about':{
name: 'about',
component: About
},
'/quote':{
name: 'quote',
component: Quote
},
'/example-route':{
name: 'example-route',
component: ExampleRoute
}
})
附加到文件底部很容易,但如何写入特定位置?
答案 0 :(得分:0)
对于像这样的小文件,最好将文件读入内存,修改它,然后再将其写回。
一种可能性是将其读入字符串列表,每行一个。然后将添加的行插入列表中。然后将列表写回文件。
另一种可能性是将文件解析为地图,将新元素插入地图,然后以所需格式将地图内容写入文件。
或者,如果您总是希望将新文本插入到文件末尾的固定偏移处,则可以读入一个字符串,并在最后插入新文本,如下所示:
package main
import (
"io/ioutil"
"log"
)
const textToInsert = `,
'/example-route':{
name: 'example-route',
component: ExampleRoute
}
})
`
func main() {
original, err := ioutil.ReadFile("routes.js")
if err != nil {
log.Fatal(err)
}
// replace last 4 characters with textToInsert
modified := append(original[0:len(original)-4], []byte(textToInsert)...)
err = ioutil.WriteFile("routes.js", modified, 0644)
if err != nil {
log.Fatal(err)
}
}