亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > Golang > 正文

Golang的os標準庫中常用函數的整理介紹

2020-04-01 19:13:28
字體:
來源:轉載
供稿:網友
這篇文章主要介紹了Go語言的os標準庫中常用函數,主要用來實現與操作系統的交互功能,需要的朋友可以參考下
 

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")
  }
 }
}


os.SameFile()這個函數的作用是檢測文件的信息是否相同所謂文件信息指的是os.Stat(),函數原型是func SameFile(fi1, fi2 FileInfo) bool
舉個例子
復制代碼代碼如下:

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("兩個文件不一樣")
}


os.Setenv()這個函數是設置環境變量的很簡單,函數原型func Setenv(key, value string) error輸入對應的key-value字符串,返回error信息
復制代碼代碼如下:

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
}


os.Symlink()對于這個函數我只能說不支持windows平臺的,創建軟連接func Symlink(oldname, newname string) error
復制代碼代碼如下:

import (
 "fmt"
 "os"
)

 

func main() {
 err := os.Symlink("1.go", "21.go") //不支持windows平臺只支持linux和unix
 fmt.Println(err)
}


os.TempDir()這個函數很簡單,返回你本地的系統temp目錄,函數原型func TempDir() string,嘿嘿,做個對比別亂了
復制代碼代碼如下:

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
}


os.Truncate()改變文件的f.Size()這個就改變了文件內容的長度了,函數原型func Truncate(name string, size int64) error,記得哈第二個是int64
復制代碼代碼如下:

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
}


os.Create()這個函數是創見一個文件,函數的原型是func Create(name string) (file *File, err error)輸入的是名稱字符串類型,返回的是一個File的指針和一個error
復制代碼代碼如下:

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,這就解釋了為什么我們明明有這個文件,我擦,創建之后哭了~啥都沒有了~~用的時候需謹慎,先判斷文件是否存在~

 

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())
}


這個就是上邊的Create()只不過權限是0777以及下邊的操作等大部分用到OpenFile()

 

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()
}


os.Stat()這個是獲取fileinfo的結構描述func Stat(name string) (fi FileInfo, err error)返回了Fileinfo這個結構,我們再前邊也詳細講了
,其實它是怎么實現的呢?因為我們沒講syscall所以我們就講一個,譬如FileInfo底層獲取fs := &fileStat{name: basename(name)}然后后邊邏輯大家可以看源代碼
復制代碼代碼如下:

import (
 "fmt"
 "os"
)

 

func main() {
 f, _ := os.Stat("1.go")
 fmt.Println(f.Size())
}


os.Fd()返回文件的句柄,函數原型是func (file *File) Fd() uintptr函數是這樣的uintptr(file.fd) 返回的是文件的句柄,句柄是什么?句柄,是整個windows編程的基礎。一個句柄是指使用的一個唯一的整數
復制代碼代碼如下:

import (
 "fmt"
 "os"
)

 

func main() {
 f, _ := os.Open("1.go")
 fmt.Println(f.Fd()) //我的平臺句柄是228
}


os.Pipe()這個函數獲取的函數的讀寫指針,函數原型func Pipe() (r *File, w *File, err error)
復制代碼代碼如下:

import (
 "fmt"
 "os"
)

 

func main() {
 r, w, _ := os.Pipe()
 fmt.Println(r, w) //&{0xc08402e120} &{0xc08402e180}
}


os.NewFile()函數原型是func NewFile(fd uintptr, name string) *File 第一個傳入的是句柄,然后是文件名稱,這個函數并不是真的創建了一個文件,是新建一個文件不保存,然后返回文件的指針
復制代碼代碼如下:

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

}


(f *File).Chdir()修改工作目錄,函數原型func (f *File) Chdir() error,這個時候f必須是目錄了,但是吧這個不支持windows
復制代碼代碼如下:

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)
}


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
国产美女被下药99| 日韩在线精品一区| 夜夜嗨av一区二区三区免费区| 国产精品福利在线观看| 亚洲午夜激情免费视频| 欧美成人免费在线视频| 91精品国产91| 亚洲片国产一区一级在线观看| 亚洲欧美日韩国产中文| 欧美一区二区三区免费视| 久久全国免费视频| 91精品在线一区| 高清在线视频日韩欧美| 欧美午夜精品久久久久久久| 精品欧美一区二区三区| 亚洲欧美三级伦理| 成人免费xxxxx在线观看| 日本欧美精品在线| 久久精品男人天堂| 亚洲有声小说3d| 欧美日韩免费在线| 久久91亚洲精品中文字幕| 2019国产精品自在线拍国产不卡| 欧美日本亚洲视频| 欧美另类暴力丝袜| 日韩av在线电影网| 国产精品九九久久久久久久| 亚洲第一综合天堂另类专| 91精品国产自产在线观看永久| 久久精品人人爽| 精品国产精品三级精品av网址| 亚洲一区美女视频在线观看免费| 欧美性在线视频| 国产精品久久999| 日韩欧美一区二区三区| 日本成人精品在线| 欧美视频免费在线观看| 欧美激情一级精品国产| 国产成人精品电影久久久| 美女啪啪无遮挡免费久久网站| 成人午夜两性视频| 亚洲第一男人天堂| 日韩大片免费观看视频播放| 91在线高清视频| 亚洲美女在线视频| 欧美一级大片在线免费观看| 成人午夜高潮视频| 国产精品2018| 欧美色另类天堂2015| 北条麻妃一区二区在线观看| 国产一区二区三区中文| 国产伦精品一区二区三区精品视频| 4k岛国日韩精品**专区| 久久久久久久亚洲精品| 日本三级久久久| 欧美精品日韩www.p站| 欧美精品手机在线| 中文字幕日韩欧美精品在线观看| 视频一区视频二区国产精品| 国内精品一区二区三区四区| 欧美综合一区第一页| 在线观看91久久久久久| 亚洲精品电影久久久| 91社区国产高清| 国产日韩欧美在线| 日韩大陆毛片av| 日韩中文字幕免费视频| 午夜精品久久17c| 亚洲电影av在线| 亚洲欧洲日产国码av系列天堂| 欧美一区二区大胆人体摄影专业网站| 国产精品视频成人| 亚洲视频国产视频| 日本免费一区二区三区视频观看| 国产欧亚日韩视频| 97在线视频免费播放| 奇米成人av国产一区二区三区| 一区三区二区视频| 这里只有精品久久| 色综合亚洲精品激情狠狠| 91精品国产色综合久久不卡98| 成人淫片在线看| 91在线免费视频| 日韩中文字幕在线免费观看| 日韩一区二区在线视频| 亚洲片av在线| 欧美亚洲激情视频| 亚洲高清久久久久久| 国产丝袜一区视频在线观看| 久久亚洲国产成人| 日韩中文字幕不卡视频| 国产不卡av在线| 久久久久久18| 日韩av电影手机在线| 亚洲视频999| 国产精品一区二区三区毛片淫片| 日本道色综合久久影院| 亚洲丁香久久久| 国产欧美一区二区三区久久人妖| 欧美性猛交xxxx乱大交极品| 国产精品第1页| 亚洲男女自偷自拍图片另类| 久久久久成人网| 韩剧1988在线观看免费完整版| 91久久嫩草影院一区二区| 成人国产精品久久久久久亚洲| 日本精品一区二区三区在线播放视频| 在线日韩欧美视频| 欧美裸体xxxxx| 亚洲精品456在线播放狼人| 91高清免费在线观看| 国产99在线|中文| 欧美性猛交xxxx免费看漫画| 亚洲欧美国产精品| 懂色av影视一区二区三区| 7777精品久久久久久| 国产福利成人在线| 欧美日韩美女在线观看| 国产精品99久久久久久www| 91探花福利精品国产自产在线| 久久精品国产96久久久香蕉| 亚洲国产精品字幕| 亚洲精品视频在线播放| 亚洲品质视频自拍网| 日日骚av一区| 精品欧美国产一区二区三区| 亚洲三级av在线| 国产精品香蕉国产| 亚洲国产成人精品女人久久久| www.久久久久久.com| 亚洲男人的天堂在线| 久久精品青青大伊人av| 成人羞羞国产免费| 欧美夫妻性生活xx| 亚洲精品一二区| 精品成人久久av| 亚洲天堂网站在线观看视频| 亚洲久久久久久久久久| www.久久撸.com| 日韩免费av在线| 国内精品小视频在线观看| 福利微拍一区二区| 奇米四色中文综合久久| 午夜精品一区二区三区视频免费看| 欧美电影免费看| 亚洲精品久久7777777| 欧美日韩国产在线播放| 国产精品99导航| 久久天天躁夜夜躁狠狠躁2022| 欧美综合在线观看| 亚洲人成电影网站色xx| 国产香蕉一区二区三区在线视频| 欧美日韩在线免费观看| 欧美一级大片在线免费观看| 奇门遁甲1982国语版免费观看高清| 91久久精品国产91久久| 久久久国产精品一区| zzjj国产精品一区二区| 久久精品在线视频| 国模精品系列视频| 高清欧美电影在线| 日韩电影在线观看中文字幕| 国产欧美日韩免费看aⅴ视频| 国产亚洲欧美日韩一区二区|