亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

在 Golang 中合并兩個文本文件

在 Golang 中合并兩個文本文件

Go
慕勒3428872 2022-05-10 17:13:47
我正在嘗試通過合并來合并兩個文本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)    }
查看完整描述

1 回答

?
qq_笑_17

TA貢獻1818條經驗 獲得超7個贊

考慮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(這可能效果不佳,因為整個文件被讀入內存,然后書面)。


查看完整回答
反對 回復 2022-05-10
  • 1 回答
  • 0 關注
  • 558 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號