Go实践-文件系统操作

来源:互联网 发布:2k15球员数据名单 编辑:程序博客网 时间:2024/06/05 13:23

由于自己的PC笔记本,用的是可怜的120G SSD硬盘,相对于现在浩瀚无比的WIN7,VS ,硬盘空间少的可怜,经常导致硬盘空间不足。没办法,每次都人肉清除临时文件比如

VS编译时,生成的.obj文件 连接时生成的.pdb文件还有就是,VS2010引入的为了提高智能提示而生成的.sdf文件。

所以想到用程序自动实现这个功能,刚好正在学习go语言,全当练手了。

程序很简单,就是从某个目录递归开始,删除某些类型的文件


//My first go little program that clean dirty files for vspackage mainimport ("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 filesfis, 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_filecountdirtysize += sub_dirtysizecontinue}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 += 1dirtysize += fsizefmt.Println("delete :" + file_name)} else {fmt.Println(err_rm)}} //for _, ext := range} //return}





原创粉丝点击