Golang 復(fù)制文件的三種做法

主要介紹三種復(fù)制文件的方法:

  1. 使用io.Copy()方法
  2. 一次性讀取輸入文件,然后再一次性寫(xiě)入目標(biāo)文件
  3. 使用buffer一塊塊地復(fù)制文件

方法一 : 使用io.Copy

func copy(src, dst string) (int64, error) {
   sourceFileStat, err := os.Stat(src)
   if err != nil {
      return 0, err
   }

   if !sourceFileStat.Mode().IsRegular() {
      return 0, fmt.Errorf("%s is not a regular file", src)
   }

   source, err := os.Open(src)
   if err != nil {
      return 0, err
   }
   defer source.Close()

   destination, err := os.Create(dst)
   if err != nil {
      return 0, err
   }

   defer destination.Close()
   nBytes, err := io.Copy(destination, source)
   return nBytes, err

這種方法雖然簡(jiǎn)單,但是缺少靈活性。如果文件太大,不是一種很好的方法。

方法二:使用ioutil.WriteFile()ioutil.ReadFile()

input, err := ioutil.ReadFile(sourceFile)
if err != nil {
   fmt.Println(err)
   return
}

err = ioutil.WriteFile(destinationFile, input, 0644)
if err != nil {
   fmt.Println("Error creating", destinationFile)
   fmt.Println(err)
   return
}

不是很高效的方法。

方法三:使用os.Read()os.Write()

buf := make([]byte, BUFFERSIZE)
for {
   n, err := source.Read(buf)
   if err != nil && err != io.EOF {
      return err
   }
   if n == 0 {
      break
   }

   if _, err := destination.Write(buf[:n]); err != nil {
      return err
   }
}

感謝作者:Wencha
查看原文:Golang 復(fù)制文件的三種做法

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 主要介紹三種復(fù)制文件的方法: 使用io.Copy()方法 一次性讀取輸入文件,然后再一次性寫(xiě)入目標(biāo)文件 使用buf...
    Wenchao閱讀 1,768評(píng)論 0 1
  • 參考Golang文件操作整理golang中的文件讀寫(xiě) 一、API 參考Go語(yǔ)言學(xué)習(xí)筆記(五)文件操作 1.os.F...
    合肥黑閱讀 15,723評(píng)論 0 8
  • Swift1> Swift和OC的區(qū)別1.1> Swift沒(méi)有地址/指針的概念1.2> 泛型1.3> 類型嚴(yán)謹(jǐn) 對(duì)...
    cosWriter閱讀 11,621評(píng)論 1 32
  • io包中最重要的是兩個(gè)接口:Reader和Writer Reader接口##### type Writer int...
    勿以浮沙筑高臺(tái)閱讀 16,454評(píng)論 0 5
  • 1、公司簡(jiǎn)況:主營(yíng)產(chǎn)品,地域,股權(quán)結(jié)構(gòu),所屬行業(yè)、概念 2、市場(chǎng)分析:銷售金額,毛利,市場(chǎng)地位 3、財(cái)務(wù)分析:各季...
    村落時(shí)光閱讀 596評(píng)論 0 0

友情鏈接更多精彩內(nèi)容