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 遍歷...