由于自己的PC笔记本,用的是可怜的120G SSD硬盘,相对于现在浩瀚无比的WIN7,VS ,硬盘空间少的可怜,经常导致硬盘空间不足。没办法,每次都人肉清除临时文件比如
VS编译时,生成的.obj文件 连接时生成的.pdb文件还有就是,VS2010引入的为了提高智能提示而生成的.sdf文件。
所以想到用程序自动实现这个功能,刚好正在学习go语言,全当练手了。
程序很简单,就是从某个目录递归开始,删除某些类型的文件
//My first go little program that clean dirty files for vs package main import ( "fmt" "os" "path" "strings" ) var FileTypes2Clean = []string{".sdf", ".obj", ".pdb", ".tlog"} func main() { dir_to_clean, _ := os.Getwd() filecount, dirtysize := clean_dirtyfiles(dir_to_clean) fmt.Printf("Total delete %d files , %d MBytes\n", filecount, dirtysize>>10>>10) } func clean_dirtyfiles(dir string) (filecount int64, dirtysize int64) { //fmt.Println("To clean dirty files for " + dir) f_dir, err := os.Open(dir) if err != nil { fmt.Println(err) return } //enum files fis, err_readdir := f_dir.Readdir(-1) if err_readdir != nil { fmt.Println(err_readdir) return } for _, fi := range fis { file_name := fi.Name() if !path.IsAbs(file_name) { file_name = path.Join(dir, file_name) } if fi.IsDir() { sub_filecount, sub_dirtysize := clean_dirtyfiles(file_name) filecount += sub_filecount dirtysize += sub_dirtysize continue } file_ext := strings.ToLower(path.Ext(file_name)) for _, ext := range FileTypes2Clean { if ext != file_ext { continue } fsize := fi.Size() err_rm := os.Remove(file_name) if err_rm == nil { filecount += 1 dirtysize += fsize fmt.Println("delete :" + file_name) } else { fmt.Println(err_rm) } } //for _, ext := range } // return }
有疑问加站长微信联系(非本文作者)