思路
首先遍歷源目錄,將所有的目錄和檔案分別儲存在兩個切片中,然後先建立所有的目錄,然後在建立所有的檔案。
目前不會處理連線檔案上**
package models
import
("bufio"
"errors"
"fmt"
"io"
"os"
"path/filepath"
"strings"
)//walkfile 檔案物件
type walkfile struct
//dir 目錄物件
type dir struct
//visit 瀏覽檔案 區分為目錄和檔案
func
(my *dir)
visit
(path string
, f os.fileinfo, err error
)error
if f.
isdir()
)}else
if(f.
mode()
& os.modesymlink)
>
0else)}
return
nil}
//createdir 建立目錄
func
(my *dir)
createdir
(dest string
, mode os.filemode)
error
}return
nil}
//createfile 建立檔案
func
(my *dir)
createfile
(sr string
, dest string
, mode os.filemode)
error
}else
}//拷貝檔案
srcfile, err := os.
open
(sr)
if err !=
nildefer
func()
}()//通過srcfile,獲取到reader
reader := bufio.
newreader
(srcfile)
//開啟dstfilename
dstfile, err := os.
openfile
(dest, os.o_wronly|os.o_create, mode)
if err !=
nil//通過dstfile,獲取到writer
writer := bufio.
newwriter
(dstfile)
defer
func()
}()_
,copyerr := io.
copy
(writer, reader)
if copyerr !=
nil//修改許可權
chmoderr := os.
chmod
(dest, mode)
if chmoderr !=
nilreturn
nil}
//copydir 複製目錄
func
(my *dir)
copydir
(destparentdir string
)error
)if err !=
nil//create dir
for_
, dirname :=
range my.dirlist
}//create file
for_
, filename :=
range my.filelist
}return
nil}
怎麼使用呢//parentname 儲存的是父級目錄
//dirname 儲存的目錄名字
assourcedir := models.dir
//進行複製destdir就是目的目錄
enderror := assourcedir.
copydir
(destdir)
if enderror !=
nil
在這方面python還是比較好呀
golang基礎知識點(持續更新中 )
第一次聽說golang應該是在2014年,從朋友那裡聽說。是google開發的。但是作為一名比較笨的it民工來講自學一門新語言花費時間和精力太大。也正是因為國內公司現在用的比較少,所以一直沒有去了解。換了新公司後因為工作需要不得不學習go語言以前做過php,node.js也做過前端開發。所以學習起來...
golang 小筆記 要點tips 持續更新中
當接收者為值型別時,無論呼叫者是值型別還是指標型別,接收者的更改都不會影響呼叫者。當接收者是指標型別時,無論呼叫者是值型別還是指標型別,接收者的更改均會影響呼叫者。type person struct func p person getname string func p person setnam...
Golang中常見的問題 持續更新
這裡列舉一些我們學習golang時常遇見的問題,他們都是符合golang語言語法的,可以正常的編譯,但是可能會出現執行結果錯誤,或者是由資源洩露的風險 當引數的可變引數是空介面型別時,傳入空介面的切片時需要注意引數的展開的問題 func main fmt.println a fmt.println ...