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)
在MSDN中,文件总共有15种属性,根据磁盘的分区格式不同,文件的属性也会不同。现在针对GetFileAttributes函数的返回值做以下整理返回字段返回值属性类型FILE_ATTRIBUTE_READONLY FILE_ATTRIBUTE_HIDDEN FILE_ATTRIBUTE_SYSTEMFILE_ATTRIBUTE_DIRECTORY FILE_ATTRIBUTE_ARCHIVE FILE_ATTRIBUTE_DEVICE FILE_ATTRIBUTE_NORMAL FILE_ATTRIBUTE_TEMPORARY FILE_ATTRIBUTE_SPARSE_FILE FILE_ATTRIBUTE_REPARSE_POINTFILE_ATTRIBUTE_COMPRESSED FILE_ATTRIBUTE_OFFLINE FILE_ATTRIBUTE_NOT_CONTENT_INDEXED FILE_ATTRIBUTE_ENCRYPTED FILE_ATTRIBUTE_VIRTUAL 橙色标记的属性为Windows系统中文件的公有属性,其中“只读”、“隐藏”、“系统”、“存档”为文件的四种基本属性。compressed,content_indexed,encrypted只存在于NTFS分区中。文件去掉全部属性后(四种基本属性),将自动标记为normal。同时具有system和hidden属性的文件会在系统中彻底隐形,这也是病毒常用的伎俩。commpressed和encrypted不能共存。默认情况下文件都有content_indexed属性