Go語言遍歷資料夾下的所有檔案,並求出MD5

2021-10-14 07:35:49 字數 1820 閱讀 9101

package main

import

("crypto/md5"

"encoding/hex"

"fmt"

"io/ioutil"

)var files =

make([

][]byte,0

,100

)//byte轉md5

func bytetomd5 (filebyte [

]byte

)string

//根據路徑找到該路徑下的所有檔案,並返回

func getfilesfromdir (path string)[

][]byte

//遍歷獲取到的每乙個目錄資訊

for_

, dir :=

range alldir

//如果不是目錄,就讀取該檔案並加入到files中

filename := path +

"/"+ dir.

name()

file, fileerr := ioutil.

readfile

(filename)

if fileerr !=

nil//列印檔案名和md5

fmt.

println

(filename +

" 的md5為 "

+bytetomd5

(file)

) files =

(files, file)

}return files

}func ge***5strs (files [

]byte)[

]string

return md5strs

}func main (

)

主要通過ioutil庫中的readdir()和readfile()兩個函式來完成,使用遞迴從根目錄開始,判斷當前遍歷到的是否是目錄,如果是目錄,就進行遞迴。如果不是目錄就說明是檔案,就可以通過readfile()函式來進行檔案的讀取。

下面增加了部分功能:通過flag直接通過命令列引數來修改路徑值,以及增加乙個只遍歷當前資料夾下檔案的函式。

使用命令列引數

func main (

)

在操作終端輸入 go run filemd5.go -path=[路徑引數] 就可以對該引數的路徑檔案進行搜尋。

遍歷當前資料夾的函式,僅將判斷為目錄下面的遞迴刪除即可,如果是目錄,那就不進行操作,使用continue進行迴圈的下一輪。

//只獲取當前路徑下的檔案,並返回

func getlocalfilesfromdir (path string)[

][]byte

//遍歷獲取到的每乙個目錄資訊

for_

, dir :=

range alldir

//如果不是目錄,就讀取該檔案並加入到files中

filename := path +

"/"+ dir.

name()

file, fileerr := ioutil.

readfile

(filename)

if fileerr !=

nil//列印檔案名和md5

fmt.

println

(filename +

" 的md5為 "

+bytetomd5

(file)

) files =

(files, file)

}return files

}

遍歷資料夾下所有檔案

對於遍歷資料夾來說,其實並不麻煩,使用file轉化位址物件,再用file組獲取內容,其實google都差不多做好了,我就懶得廢話了,直接上 public listlist new arraylist 遍歷所有檔案 public listgetfilelist string path else ret...

shell 遍歷資料夾下所有檔案

linux 下有tree命令可以檢視指定資料夾下的所有檔案 需要安裝tree,ubuntu下sudo apt get install tree 要實現這樣的功能,可以有多種實現方式,指令碼語言就是一種方便快捷的方式,python,shell都可以很容易實現。最近在學習makefile編寫,其中有很多...

OpenCV遍歷資料夾下所有檔案

opencv中有實現遍歷資料夾下所有檔案的類directory,它裡面包括3個成員函式 1 getlistfiles 遍歷指定資料夾下的所有檔案,不包括指定資料夾內的資料夾 2 getlistfolders 遍歷指定資料夾下的所有資料夾,不包括指定資料夾下的檔案 3 getlistfilesr 遍歷...