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

标签 file go

<分区>

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

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

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

最佳答案

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

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

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

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

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)
    }
}

关于file - 如何写入文件中的特定位置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35801074/

相关文章:

python - 如何搜索和替换文件中的文本?

JSON 文件到 Ruby 哈希

python - 转换为 Logn Python 3.7

go - 未找到https://gonum.org/v1/gonum

Golang 多值函数组合

php - 我只想使用 PHP 从文本文件中读取特定行

javascript - 如何使 JS 对象在多个文件中可用

Go: 将 var 传递给匿名函数

go - 在 OSX 上交叉编译 Go?

go - 类型断言失败,从 golang 中的 interface{} 正确转换