起初,做了個小程式,用來檢測磁碟中所有的檔案
package mainimport(
"fmt"
"io/ioutil"
"os"
)var dirpath ="d:\\"
func main()
func checkdir(dirpath string)
for _, dir := range dirs
fmt.println("檢測目錄:", dirpath+"\\"+dir.name(),"sys", dir.sys())
checkdir(dirpath +"\\"+ dir.name())
}else
}}}
輸出結果為:
檔案: d:\\my documents\downloads\wcftestclient_exe.rar 大小: 110608
檢測目錄: d:\\softdown sys & 0 0}
檔案: d:\\softdown\sublime text build 3012 setup.exe 大小: 7051120
檢測目錄: d:\\softdown\vice.2015.720p.web-dl.dd5.1.h.264-playnow sys & 0 0}
檔案: d:\\softdown\vice.2015.720p.web-dl.dd5.1.h.264-playnow\vice.2015.720p.web-dl.dd5.1.h.264-playnow.mkv.tdl 大小: 3255167129
檔案: d:\\softdown\vice.2015.720p.web-dl.dd5.1.h.264-playnow\f7a8aa8e2082c4ebe28f2c26cf16e4b08a27d5c1.torrent 大小: 31751
檔案: d:\\softdown\vice.2015.720p.web-dl.dd5.1.h.264-playnow.qud.cfg 大小: 556
檔案: d:\\softdown\[iplaysoft.com]vs2013_rtm_ult_chs.iso 大小: 3077509120
檢測目錄: d:\\system volume information sys & 0 0}
panic: 目錄輸入有誤!
goroutine 1 [running]:
main.checkdir(0xc0820585c0, 0x1d)
f:/goproj/gittest.git/trunk/src/website/main.go:22 +0xde
main.checkdir(0x4f3890, 0x3)
f:/goproj/gittest.git/trunk/src/website/main.go:28 +0x46a
main.main()
f:/goproj/gittest.git/trunk/src/website/main.go:15 +0xfc
這裡會報乙個異常
d:\\system volume information
microsoft的解答:
本文介紹如何訪問 system volume information 資料夾。system volume information 資料夾是乙個隱藏的系統資料夾,系統還原工具使用此資料夾來儲存它的資訊和還原點。計算機的每個分割槽上都有乙個 system volume information 資料夾。為了進行故障排除,可能需要訪問此資料夾。
於是就要判斷檔案是否是隱藏檔案,但是golang api中並未直接給出這個ishidden屬性
調式原始碼得知:
os.stat方法可以獲取到乙個fileinfo,於是寫了如下**
fileinfo,_
:=os
.stat
(dirpath
)
sysifno
:=fileinfo
.sys
()
fmt
.println
(sysifno
)os.
stat
os包中的func lstat(name string) (fi fileinfo, err error)
通過fs,err:=&filestat這個初始化得到了乙個fileinfo物件
type filestat structtype win32fileattributedatastruct
這裡就能夠理解這裡輸出的
fileattributes=22
檢測目錄:
d:\\system volume information sys & 0 0}
22代表的是也就是檢測目錄: d:\\softdown\vice.2015.720p.web-dl.dd5.1.h.264-playnow sys & 0 0}1 0 0 0 0 16 目錄
1 0 0 4 系統
& 1 0 2 隱藏
------------
1 0 1 1 0 =22
代表此檔案是隱藏檔案
16 目錄
這樣就很明確了:也就是說如果二進位制中倒數第二位為1,代表是隱藏目錄(檔案)
如此就能進行判斷了
package mainimport(
"fmt"
"io/ioutil"
"os"
"reflect"
"strconv"
)var dirpath ="d:\\"
func main()
func checkdir(dirpath string)
for _, dir := range dirs
}else}}}
func checkishidden(file os.fileinfo)bool
return false
}
Windows下檔案列舉,搜尋
windows下列舉檔案用的函式是 findfirstfile 和 findnextfile 另外乙個結構體是win32 find data 以下是msdn對於win32 find data的定義 typedef struct win32 find data win32 find data,pwin...
WINDOWS下資料夾簡介
windows下資料夾簡介 2012 03 30 12 06 windows下資料夾簡介 ime資料夾 這是輸入法資料夾,用來存放系統預設安裝的輸入法檔案。windows作業系統已經內嵌了東亞國家的輸入法,如日語,韓文等,從理論上可以將用不到的一些其他語言輸入法刪除掉,但不建議這樣做,因為這樣有可能...
linux與windows下檔案轉換
記錄下平時的tips 換行問題 linux 換行 n windows 換行 r n windowns linux dos2unix linux windowns unix2dos 例 ls l filename 顯示檔案許可權 hexdump c filename 顯示檔案格式 unix2dos n...