代码如下:
package main
import (
"fmt"
"io"
"os"
)
func main() {
f := openFile()
useFile(f)
useFile2(f)
}
func openFile() *os.File {
//hello.txt 中的内容为 world
f, _ := os.Open("hello.txt")
return f
}
func useFile(f *os.File) {
fmt.Println("第一次使用f")
io.Copy(os.Stdout, f)
fmt.Println()
}
func useFile2(f *os.File) {
fmt.Println("第二次使用f")
io.Copy(os.Stdout, f)
fmt.Println()
}
输出:
第一次使用f
world
第二次使用f
在我第二次使用f(*os.File)的时候,f已经被关闭了,而我却并没有主动关闭它。
疑问如下:
打开的文件(os.File)在不主动关闭的情况下,会在什么时候关闭?*
如果是在使用一次之后自动关闭,那我还需不需要主动关闭它?
请大佬们帮我答疑解惑
f并不是被你关闭了,只是第一次copy后,偏移已经移到文件末尾,所以第二次copy,读取不到内容
你可以在第二次copy前调用下f.Seek() 设置文件偏移