Go之獲取Windows下檔案是否隱藏

2022-02-06 15:07:32 字數 3052 閱讀 4246

起初,做了個小程式,用來檢測磁碟中所有的檔案

package main

import(

"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 struct

type win32fileattributedatastruct

這裡就能夠理解這裡輸出的

fileattributes=22

檢測目錄:

d:\\system volume information sys & 0 0}

22代表的是也就是

1 0 0 0 0 16 目錄

1 0 0 4 系統

& 1 0 2 隱藏

------------

1 0 1 1 0 =22

代表此檔案是隱藏檔案

檢測目錄: d:\\softdown\vice.2015.720p.web-dl.dd5.1.h.264-playnow sys & 0 0}

16 目錄

這樣就很明確了:也就是說如果二進位制中倒數第二位為1,代表是隱藏目錄(檔案)

如此就能進行判斷了

package main

import(

"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...