os.Rename()这个函数的原型是func Rename(oldname, newname string) error,输入的是旧文件名,新文件名,然后返回一个error其实这个函数的真正实现用的syscall.Rename()然后通过MoveFile(from *uint16, to *uint16) (err error) = MoveFileW来重新命名
import ( "fmt" "os" )func main() { err := os.Rename("1.go", "2.go") if err != nil { if os.IsExist(err) { //判断一个是否文件已经存在的错误 fmt.Println("文件已经存在") os.Rename("1.go", "widuu_1.go") } } }
import ( "fmt" "os" )func main() { f1, _ := os.Stat("1.go") f2, _ := os.Stat("21.go") if os.SameFile(f1, f2) { fmt.Println("两个文件一样") return } fmt.Println("两个文件不一样") }
import ( "fmt" "os" )func main() { err := os.Setenv("WD_PATH", "D:/golang") if err != nil { fmt.Println(err) } env := os.Getenv("WD_PATH") fmt.Println(env) //返回的是D:/golang }
import ( "fmt" "os" )func main() { err := os.Symlink("1.go", "21.go") //不支持windows平台只支持linux和unix fmt.Println(err) }
import ( "fmt" "io/ioutil" "os" )func main() { //创建临时的tmp dir, _ := os.Getwd() path, _ := ioutil.TempDir(dir, "tmp") fmt.Println(path) //D:\test\tmp764030415 //这个返回的是系统temp temp := os.TempDir() fmt.Println(temp) //windows来说C:\Users\ADMINI~1\AppData\Local\Temp }
import ( "fmt" "os" )func main() { f, _ := os.Stat("1.go") fmt.Println(f.Size()) //1.go 83 err := os.Truncate("1.go", 10) if err != nil { fmt.Println(err) } f, _ = os.Stat("1.go") fmt.Println(f.Size()) //1.go现在是10 文件也变成了package ma }
import ( "fmt" "os" "reflect" )func main() { f, _ := os.Create("widuu_2.go") defer f.Close() fmt.Println(reflect.ValueOf(f).Type()) //*os.File }
os.OpenFile函数的原型是func OpenFile(name string, flag int, perm FileMode) (file *File, err error)要指定文件权限和打开的方式,就是我们上边所用到的
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()) }
os.Open()这个函数是打开文件使用的,函数原型是func Open(name string) (file *File, err error),返回值就不说了一样的,它的其实原理是这样的OpenFile(name, O_RDONLY, 0)以读文件的模式打开
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) }