猿问

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

我正在编写一个命令行工具来帮助我搭建我的项目。我需要能够将一行文本添加到文件但添加到特定位置。这是示例:


我有这个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

  }

})

附加到文件底部很容易,但如何写入特定位置?


慕斯王
浏览 155回答 1
1回答

繁星淼淼

对于像这样的小文件,最好将文件读入内存,修改它,然后再写回。一种可能性是将其读入一个字符串列表,每行一个。然后将添加的行插入列表中。然后将列表写回文件。另一种可能性是将文件解析为映射,将新元素插入映射中,然后将映射的内容以所需格式写入文件。或者,如果您总是想在距文件末尾的固定偏移处插入新文本,您可以读入一个字符串,然后在末尾插入新文本,如下所示:package mainimport (    "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)    }}
随时随地看视频慕课网APP

相关分类

Go
我要回答