真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

go語言實(shí)現(xiàn)file命令 go語言文件操作

使用go命令可以定位到文件頭和文件末

使用go命令可以定位到文件頭和文件末

創(chuàng)新互聯(lián)建站主要從事成都做網(wǎng)站、成都網(wǎng)站制作、成都外貿(mào)網(wǎng)站建設(shè)、網(wǎng)頁設(shè)計(jì)、企業(yè)做網(wǎng)站、公司建網(wǎng)站等業(yè)務(wù)。立足成都服務(wù)民豐,十年網(wǎng)站建設(shè)經(jīng)驗(yàn),價(jià)格優(yōu)惠、服務(wù)專業(yè),歡迎來電咨詢建站服務(wù):18980820575

當(dāng)go run 運(yùn)行時會將文件轉(zhuǎn)移到臨時路徑下,然后再進(jìn)行編譯和執(zhí)行,分片0就是C:\Users\xxx\AppData\Local\Temp___go_build_main_go.exe;

go build編譯執(zhí)行時,那么分片0為執(zhí)行文件的相對路徑為(main.go)

fmt.Println(os.Args)

//output:[C:\Users\xxx\AppData\Local\Temp\___go_build_main_go.exe]

1

2

1

2

exec.LookPath()

根據(jù)傳入的參數(shù)來從PATH中獲取可執(zhí)行文件的絕對路徑(沒有編譯的)或者相對路徑(編譯后的);參數(shù)若帶分割號就直接查詢返回

func LookPath(file string) (string, error)

LookPath searches for an executable named file in the directories named by the

PATH environment variable. If file contains a slash, it is tried directly and the

PATH is not consulted. LookPath also uses PATHEXT environment variable to match a

suitable candidate. The result may be an absolute path or a path relative to the

current directory.

1

2

3

4

5

6

7

1

2

3

4

5

6

7

filepath.Abs()

根據(jù)傳入的路徑計(jì)算出絕對路徑,如果傳入的為相對路徑,那么它會把當(dāng)前路徑拼接上

編譯后返回的是真實(shí)的路徑(D:\go_project\src\github.com\wzbwzt\studyGo\GetPath\main.exe)

未編譯執(zhí)行返回的是臨時執(zhí)行路徑

(C:\Users\xxx\AppData\Local\Temp___go_build_main_go.exe)

Go語言文件操作

本文主要介紹了Go語言中文件讀寫的相關(guān)操作。

文件是什么?

計(jì)算機(jī)中的文件是存儲在外部介質(zhì)(通常是磁盤)上的數(shù)據(jù)集合,文件分為文本文件和二進(jìn)制文件。

os.Open() 函數(shù)能夠打開一個文件,返回一個 *File 和一個 err 。對得到的文件實(shí)例調(diào)用 close() 方法能夠關(guān)閉文件。

為了防止文件忘記關(guān)閉,我們通常使用defer注冊文件關(guān)閉語句。

Read方法定義如下:

它接收一個字節(jié)切片,返回讀取的字節(jié)數(shù)和可能的具體錯誤,讀到文件末尾時會返回 0 和 io.EOF 。 舉個例子:

使用for循環(huán)讀取文件中的所有數(shù)據(jù)。

bufio是在file的基礎(chǔ)上封裝了一層API,支持更多的功能。

io/ioutil 包的 ReadFile 方法能夠讀取完整的文件,只需要將文件名作為參數(shù)傳入。

os.OpenFile() 函數(shù)能夠以指定模式打開文件,從而實(shí)現(xiàn)文件寫入相關(guān)功能。

其中:

name :要打開的文件名 flag :打開文件的模式。 模式有以下幾種:

perm :文件權(quán)限,一個八進(jìn)制數(shù)。r(讀)04,w(寫)02,x(執(zhí)行)01。

golang ioutil.WriteFile函數(shù)perm參數(shù)的用法

golang ioutil.WriteFile函數(shù)perm參數(shù)的用法

ioutil.WriteFile(..., perm os.FileMode)

剛開始接觸golang的文件API的時候,總是納悶為什么在創(chuàng)建文件的時候需要顯示的指定文件的perm屬性,難道不能從系統(tǒng)的umask里面獲取嗎?

實(shí)際上ioutil.WriteFile在創(chuàng)建新文件時,并不是直接使用參數(shù)perm的值,而是要和umask的值做合并的。把函數(shù)參數(shù)的值合并到當(dāng)前umask的值,才是最終創(chuàng)建出來文件的perm屬性。

例如

umask為空,所以ioutil.WriteFile的perm屬性就是最后的文件屬性

umask為0777,所以ioutil.WriteFile的perm屬性全被disable掉了

umask為0000,所以ioutil.WriteFile的perm屬性就是最后的文件屬性

umask為0640,而ioutil.WriteFile的perm屬性也是640,正好全部被關(guān)閉了,最后生成的文件沒有任何屬性。

即ioutil.WriteFile在寫文件時,如果目標(biāo)文件已經(jīng)存在,那么目標(biāo)文件的perm屬性不會被改動,即此時ioutil.WriteFile的參數(shù)perm會被忽略。

注意一點(diǎn)就明白了,touch命令使用的是0666的屬性,它并沒有給X(executable)屬性置值,所以不管在umask中對executable位是否置1,touch命令就不能生成一個具有executable的文件。

003-golang 調(diào)用外部命令

003-golang 調(diào)用外部命令

相關(guān)函數(shù)

exec包執(zhí)行外部命令,它將os.StartProcess進(jìn)行包裝使得它更容易映射到stdin和stdout,并且利用pipe連接i/o.

func LookPath(file string) (string, error) //LookPath在環(huán)境變量中查找科執(zhí)行二進(jìn)制文件,如果file中包含一個斜杠,則直接根據(jù)絕對路徑或者相對本目錄的相對路徑去查找

在用exec包調(diào)用的其他進(jìn)程后如何關(guān)閉結(jié)束,可以使用context包的機(jī)制進(jìn)行管理,context包的使用詳見:

exec.CommandContext方發(fā)實(shí)現(xiàn)了context,通過context可以對exec啟動的進(jìn)程結(jié)束。

隱藏程序自身黑窗口的方法:go build -ldflags="-H windows"

隱藏子進(jìn)程黑窗口的方法:


網(wǎng)站名稱:go語言實(shí)現(xiàn)file命令 go語言文件操作
標(biāo)題來源:http://weahome.cn/article/ddcdsds.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部