在 Golang 中合并两个文本文件

我正在尝试通过合并来合并两个文本fileACopy.txt文件tmp1.txt。尝试执行此操作时出现的错误是:


Cannot use 'fileACopy' (type *File) as type []byte"

两个文本文件都有多行字符串,我想保留换行符。我已经导入了io,log和os.


我的代码需要如何修改或者我应该使用什么代码?


// Append fileACopy.txt to tmp1.txt

    fileACopy, err := os.Open("./fileACopy.txt")

    if err != nil {

        log.Fatal(err)

    }

    defer fileACopy.Close()


    append, err := os.OpenFile("tmp1.txt", os.O_APPEND|os.O_CREATE|os.O_WRONLY, 0644)

    if err != nil {

        log.Fatal(err)

    }

    defer append.Close()


    if _, err := append.Write(fileACopy); err != nil {

        log.Fatal(err)

    }


    err := os.Remove("fileACopy.txt")

    if err != nil {

        log.Fatal(err)

    }


慕勒3428872
浏览 515回答 1
1回答

qq_笑_17

考虑Open和Write的定义:func Open(name string) (*File, error)func (f *File) Write(b []byte) (n int, err error)所以这一行:fileACopy, err := os.Open("./fileACopy.txt")给你fileACopy(a *File) 然后你把它作为参数传递给append.Write(fileACopy). 根据上述定义append.Write,[]byte您尝试向其传递不同的 ( fileACopy, a *File),因此出现错误“不能使用 'fileACopy' (type *File) as type []byte”。实现您想要的最简单的方法可能是使用io.Copy:Copy(dst Writer, src Reader) (written int64, err error)在你的情况下io.Copy(append, fileACopy)应该做的伎俩。A,效率较低的替代方法是使用ioutil.ReadAll(以及其他选项)读取文件内容,这将为您提供[]byte然后可以传递给您的文件内容append.Write(这可能效果不佳,因为整个文件被读入内存,然后书面)。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Go