Go实践-文件系统操作

由于自己的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
}





  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值