为了账号安全,请及时绑定邮箱和手机立即绑定

如何写入文件中的特定位置

如何写入文件中的特定位置

Go
慕斯王 2021-12-20 14:46:45
我正在编写一个命令行工具来帮助我搭建我的项目。我需要能够将一行文本添加到文件但添加到特定位置。这是示例:我有这个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  }})附加到文件底部很容易,但如何写入特定位置?
查看完整描述

1 回答

?
繁星淼淼

TA贡献1775条经验 获得超11个赞

对于像这样的小文件,最好将文件读入内存,修改它,然后再写回。


一种可能性是将其读入一个字符串列表,每行一个。然后将添加的行插入列表中。然后将列表写回文件。


另一种可能性是将文件解析为映射,将新元素插入映射中,然后将映射的内容以所需格式写入文件。


或者,如果您总是想在距文件末尾的固定偏移处插入新文本,您可以读入一个字符串,然后在末尾插入新文本,如下所示:


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)

    }

}


查看完整回答
反对 回复 2021-12-20
  • 1 回答
  • 0 关注
  • 154 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信