中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Golang中有哪些復制文件的方法

發布時間:2021-06-11 17:18:31 來源:億速云 閱讀:208 作者:Leah 欄目:編程語言

Golang中有哪些復制文件的方法,很多新手對此不是很清楚,為了幫助大家解決這個難題,下面小編將為大家詳細講解,有這方面需求的人可以來學習下,希望你能有所收獲。

方法1:使用io.Copy()

該實用程序的第一個版本將使用io.Copy()標準GO庫的功能。實現中可以找到實用程序的邏輯。copy()職能如下:

Golang中有哪些復制文件的方法

除了測試要復制的文件是否存在外(os.Stat(src)),并且是一個常規文件(sourceFileStat.Mode().IsRegular())這樣您就可以打開它閱讀,所有的工作都是由io.Copy(destination, source)聲明。這,這個,那,那個io.Copy()函數返回復制的字節數和復制過程中發生的第一條錯誤消息。在Go中,如果沒有錯誤消息,則錯誤變量的值將為nil.

您可以了解更多關于io.Copy()在IO封裝文件頁。

執行cp1.go將生成下一種輸出:

$ run cp1
Please provide two command line arguments
$ run cp1 fileCPtxt tmpfileCPCOPY
Copied bytes
$ diff fileCPtxt tmpfileCPCOPY

這種技術盡可能簡單,但不給開發人員帶來靈活性,這并不總是一件壞事。但是,有時開發人員需要或希望決定如何讀取文件。

方法2:使用ioutil.WriteFile()和ioutil.ReadFile()

復制文件的第二種方法是使用ioutil.ReadFile()和ioutil.WriteFile()職能。第一個函數將整個文件的內容讀入字節片,第二個函數將字節片的內容寫入文件中。
實用程序的邏輯可以在以下GO代碼中找到:

Golang中有哪些復制文件的方法

除了這兩個if塊,它們是工作方式的一部分,您可以看到程序的功能在ioutil.ReadFile()和ioutil.WriteFile()陳述。

執行cp2.go將生成下一種輸出:

$ run cp2
Please provide two command line arguments
$ run cp2 fileCPtxt tmpcopyFileCP
$ diff fileCPtxt tmpcopyFileCP

請注意,盡管此技術將復制一個文件,但是當您想要復制大型文件時,它可能并不有效,因為ioutil.ReadFile()也將是巨大的。

方法3:使用os.Read()和os.Write()

在GO中復制文件的第三種方法是使用cp3.go將在本節中開發的實用程序。它接受三個參數:輸入文件的文件名、輸出文件的文件名和緩沖區的大小。

最重要的部分cp3.go駐留在以下for循環,可以在copy() function:

Golang中有哪些復制文件的方法

這種技術使用os.Read()用于將輸入文件的一小部分讀入名為buf和os.Write()將緩沖區的內容寫入文件。當讀取錯誤或到達文件末尾時,復制過程停止(io.EOF).

執行cp3.go將生成下一種輸出:

$ run cp3
usage cp3 source destination BUFFERSIZE
$ run cp3 fileCPtxt tmpbuf10 
Copying fileCPtxt to tmpbuf10
$ run cp3 fileCPtxt tmpbuf20 
Copying fileCPtxt to tmpbuf20

如您所見,緩沖區的大小極大地影響了cp3.go.

做一些基準

本文的最后一部分將嘗試比較這三個程序以及cp3.go對于不同的緩沖區大小,請使用time(1)命令行實用程序。

下面的輸出顯示了cp1.go, cp2.go,和cp3.go復制500 MB文件時:

Golang中有哪些復制文件的方法

輸出結果表明,這三個實用程序的性能非常相似,這意味著標準GO庫的功能非常聰明和優化。

現在,讓我們測試緩沖區大小如何影響cp3.go。執行cp3.go如果緩沖區大小為10、20和1,000字節,以便在相當快的計算機上復制500MB文件,生成的輸出顯示,緩沖區越大,cp3.go實用程序,這或多或少是預期的。此外,使用小于20個字節的緩沖區大小復制大文件是一個非常緩慢的過程,應該避免。

看完上述內容是否對您有幫助呢?如果還想對相關知識有進一步的了解或閱讀更多相關文章,請關注億速云行業資訊頻道,感謝您對億速云的支持。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

永年县| 石城县| 南木林县| 桃园市| 河池市| 阳新县| 平武县| 孝昌县| 铁岭县| 澎湖县| 辽阳县| 宜兰市| 樟树市| 和平区| 湛江市| 阿鲁科尔沁旗| 巴南区| 陆丰市| 卓资县| 平昌县| 南投市| 平湖市| 惠来县| 金川县| 法库县| 霞浦县| 保山市| 嘉义县| 金阳县| 哈巴河县| 舞阳县| 晋宁县| 于田县| 沂水县| 方城县| 镇原县| 林周县| 谷城县| 山东| 广昌县| 定兴县|