我正在尝试通过合并来合并两个文本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 关注
- 514 浏览
添加回答
举报
0/150
提交
取消