```go
package main
import (
"fmt"
"os"
)
func main() {
f := "D:\\cron"
fmt.Println(os.Stat(f))
fmt.Println(os.Open(f))
f = "D:\\con"
fmt.Println(os.Stat(f))
fmt.Println(os.Open(f))
}
结果如下:
<nil> CreateFile D:\cron: The system cannot find the file specified.
<nil> open D:\cron: The system cannot find the file specified.
<nil> CreateFile D:\con: The parameter is incorrect.
&{0xc000086a00} <nil>
```
我就是想读取一个文件,我觉得os.Open()应该在文件不存在时返回错误,这样我就可以不多调一次os.Stat()
然而不知为啥会碰到上面这个问,搞不懂“D:\\con”这个为啥会是参数错误,而且os.Open竟然返回正常。
第一个返回值的值是nil,难道你还能read()?我没试过,应该可以read,然后read也是读不到什么的!类型肯定还是*File类型,同样也可以调用这个对象下面的方法,但是读取不到任何东西。因为read()方法会进行检查的!如果你传递过的参数是一个nil值,那么肯定不会进行读取了,而是直接抛出“无效参数”的错误!如下:
![image.png](https://static.studygolang.com/191017/b20b8a7733586454ffd7b2a14fe79d1a.png)
#18