这个问题已经有答案了:
Open a file and write some word then read it get nothing(1个回答)
两年前关闭。
我创建2个文件从代码使用os。创建功能。
我写一些字符串到file 1,然后试图复制file 1的内容到file 2使用io.Copy,但它不工作。
没有抛出错误。有人能告诉我这里发生了什么吗?谢谢。
Playground链接-https://play.golang.org/p/lv_2VfsNIfI
package main
import (
"io"
"io/ioutil"
"log"
"os"
)
func main() {
file1, err := os.Create("file1")
if err != nil {
log.Fatal(err)
}
file1.WriteString("Some test data")
defer file1.Close()
defer os.Remove(file1.Name())
log.Println("File1 Data : ", readFile(file1.Name()))
file2, err := os.Create("file2")
if err != nil {
log.Fatal(err)
}
defer file2.Close()
defer os.Remove(file2.Name())
w, err := io.Copy(file2, file1)
if err != nil {
log.Fatal(err)
}
log.Println("Copied", w)
log.Println("File2 Data : ", readFile(file2.Name()))
}
func readFile(fname string) string {
data, err := ioutil.ReadFile(fname)
if err != nil {
log.Fatal(err)
}
return string(data)
}
字符串
我得到的输出,
2009/11/10 23:00:00 File1 Data : Some test data
2009/11/10 23:00:00 Copied 0
2009/11/10 23:00:00 File2 Data :
型
1条答案
按热度按时间kgqe7b3p1#
您需要使用
file1.Seek(0,io.SeekStart)
返回到file1的开头,因为文件光标位于写入数据的末尾。Seek函数接收两个参数:
offset类型int64:表示文件指针移动的字节数。
int类型的whence:用于确定偏移量的参考点。它可以取三个值之一:io.SeekStart,io.SeekCurrent或io. SeekEnd。这些值分别指示偏移量应该从文件的开头,当前位置或结尾计数。
字符串
Go标准库文档链接
io.Seekio.StartSeek