我正在嘗試通過合并來合并兩個文本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(這可能效果不佳,因為整個文件被讀入內存,然后書面)。
- 1 回答
- 0 關注
- 558 瀏覽
添加回答
舉報
0/150
提交
取消