這個仍是在個人博客首發的,可是我感受人流量過小,咱們寫博客的目的不只是記錄咱們再用的時候遇到的問題,是爲了更好的讓你們在之後的學習和開發中也用到~~爲go語言的宣傳盡本身一點微薄的力量
今天咱們講golang標準庫的os包type File struct{},仍是廢話少說直接上代碼html
import ( "fmt" "os" "reflect" ) func main() { f, _ := os.Create("widuu_2.go") defer f.Close() fmt.Println(reflect.ValueOf(f).Type()) //*os.File }
這個函數的原理實際上是這樣的OpenFile(name, O_RDWR|O_CREATE|O_TRUNC, 0666) O_RDWR也就是說用讀寫的權限,O_CREATE而後文件存在忽略,不存在建立它,O_TRUNC文件存在截取長度爲0,這就解釋了爲何咱們明明有這個文件,我擦,建立以後哭了~啥都沒有了~~用的時候需謹慎,先判斷文件是否存在~git
import ( "fmt" "os" ) func main() { f, _ := os.OpenFile("10.go", os.O_RDWR|os.O_CREATE|os.O_TRUNC, 0777) defer f.Close() fmt.Println(f.Stat()) }
這個就是上邊的Create()只不過權限是0777以及下邊的操做等大部分用到OpenFile()github
import ( "fmt" "os" "reflect" ) func main() { f, _ := os.Open("1.go") defer f.Close() }
import ( "fmt" "os" ) func main() { f, _ := os.Stat("1.go") fmt.Println(f.Size()) }
import ( "fmt" "os" ) func main() { f, _ := os.Open("1.go") fmt.Println(f.Fd()) //個人平臺句柄是228 }
import ( "fmt" "os" ) func main() { r, w, _ := os.Pipe() fmt.Println(r, w) //&{0xc08402e120} &{0xc08402e180} }
import ( "fmt" "os" ) func main() { f, _ := os.Open("ini.go") defer f.Close() f1 := os.NewFile(f.Fd(), "ceshi.go") //輸如ini.go的句柄 defer f1.Close() fd, _ := f1.Stat() fmt.Println(fd.ModTime()) //返回的是ini.go的建立時間2013-11-27 09:11:50.2793737 +0800 CST }
import ( "fmt" "os" ) func main() { dir, _ := os.Getwd() fmt.Println(dir) f, _ := os.Open("views") err := f.Chdir() if err != nil { fmt.Println(err) } dir1, _ := os.Getwd() fmt.Println(dir1) }
今天也就到這裏,明天咱們繼續哈~~~golang
博客首發在http://www.widuu.com/archives/01/921.html,你們能夠在個人博客找前5個os包的講解,天天一點了解golang
github的地址:https://github.com/widuu/gopkg編程