日本综合一区二区|亚洲中文天堂综合|日韩欧美自拍一区|男女精品天堂一区|欧美自拍第6页亚洲成人精品一区|亚洲黄色天堂一区二区成人|超碰91偷拍第一页|日韩av夜夜嗨中文字幕|久久蜜综合视频官网|精美人妻一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時(shí)間:8:30-17:00
你可能遇到了下面的問題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營(yíng)銷解決方案
Golang中有哪些復(fù)制文件的方法-創(chuàng)新互聯(lián)

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

創(chuàng)新互聯(lián)建站于2013年創(chuàng)立,是專業(yè)互聯(lián)網(wǎng)技術(shù)服務(wù)公司,擁有項(xiàng)目成都網(wǎng)站設(shè)計(jì)、網(wǎng)站建設(shè)網(wǎng)站策劃,項(xiàng)目實(shí)施與項(xiàng)目整合能力。我們以讓每一個(gè)夢(mèng)想脫穎而出為使命,1280元合水做網(wǎng)站,已為上家服務(wù),為合水各地企業(yè)和個(gè)人服務(wù),聯(lián)系電話:028-86922220

方法1:使用io.Copy()

該實(shí)用程序的第一個(gè)版本將使用io.Copy()標(biāo)準(zhǔn)GO庫(kù)的功能。實(shí)現(xiàn)中可以找到實(shí)用程序的邏輯。copy()職能如下:

Golang中有哪些復(fù)制文件的方法

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

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

執(zhí)行cp1.go將生成下一種輸出:

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

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

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

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

Golang中有哪些復(fù)制文件的方法

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

執(zhí)行cp2.go將生成下一種輸出:

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

請(qǐng)注意,盡管此技術(shù)將復(fù)制一個(gè)文件,但是當(dāng)您想要復(fù)制大型文件時(shí),它可能并不有效,因?yàn)閕outil.ReadFile()也將是巨大的。

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

在GO中復(fù)制文件的第三種方法是使用cp3.go將在本節(jié)中開發(fā)的實(shí)用程序。它接受三個(gè)參數(shù):輸入文件的文件名、輸出文件的文件名和緩沖區(qū)的大小。

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

Golang中有哪些復(fù)制文件的方法

這種技術(shù)使用os.Read()用于將輸入文件的一小部分讀入名為buf和os.Write()將緩沖區(qū)的內(nèi)容寫入文件。當(dāng)讀取錯(cuò)誤或到達(dá)文件末尾時(shí),復(fù)制過程停止(io.EOF).

執(zhí)行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

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

做一些基準(zhǔn)

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

下面的輸出顯示了cp1.go, cp2.go,和cp3.go復(fù)制500 MB文件時(shí):

Golang中有哪些復(fù)制文件的方法

輸出結(jié)果表明,這三個(gè)實(shí)用程序的性能非常相似,這意味著標(biāo)準(zhǔn)GO庫(kù)的功能非常聰明和優(yōu)化。

現(xiàn)在,讓我們測(cè)試緩沖區(qū)大小如何影響cp3.go。執(zhí)行cp3.go如果緩沖區(qū)大小為10、20和1,000字節(jié),以便在相當(dāng)快的計(jì)算機(jī)上復(fù)制500MB文件,生成的輸出顯示,緩沖區(qū)越大,cp3.go實(shí)用程序,這或多或少是預(yù)期的。此外,使用小于20個(gè)字節(jié)的緩沖區(qū)大小復(fù)制大文件是一個(gè)非常緩慢的過程,應(yīng)該避免。

看完上述內(nèi)容是否對(duì)您有幫助呢?如果還想對(duì)相關(guān)知識(shí)有進(jìn)一步的了解或閱讀更多相關(guān)文章,請(qǐng)關(guān)注創(chuàng)新互聯(lián)成都網(wǎng)站設(shè)計(jì)公司行業(yè)資訊頻道,感謝您對(duì)創(chuàng)新互聯(lián)成都網(wǎng)站設(shè)計(jì)公司的支持。

另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)scvps.cn,海內(nèi)外云服務(wù)器15元起步,三天無理由+7*72小時(shí)售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、網(wǎng)站設(shè)計(jì)器、香港服務(wù)器、美國(guó)服務(wù)器、虛擬主機(jī)、免備案服務(wù)器”等云主機(jī)租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡(jiǎn)單易用、服務(wù)可用性高、性價(jià)比高”等特點(diǎn)與優(yōu)勢(shì),專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場(chǎng)景需求。


名稱欄目:Golang中有哪些復(fù)制文件的方法-創(chuàng)新互聯(lián)
文章網(wǎng)址:http://www.dlmjj.cn/article/cddhii.html