编程开源技术交流,分享技术与知识

网站首页 > 开源技术 正文

Go语言编程,制作高效的清理垃圾文件程序,编译后可用,注解详细

wxchong 2024-07-25 13:32:28 开源技术 17 ℃ 0 评论

主程序main.go

package main

import (
	"fmt"
	"os"
)

// GetTempDirs 获取临时文件及文件夹
func GetTempDirs() []string {
	//TempDir返回临时文件使用的默认目录。
	//在Unix系统中,如果非空则返回$TMPDIR,否则返回/tmp。
	//在Windows上,它使用GetTempPath,返回%TMP%、%TEMP%、%USERPROFILE%或Windows目录中的第一个非空值。
	//既不能保证该目录存在,也不能保证该目录具有可访问权限。
	tempDir := os.TempDir()
	//输出tempDir临时文件夹的目录名
	fmt.Println("temp folder is   : ",tempDir)
	//ReadDir读取指定的目录,返回所有按文件名排序的目录项。
	//如果在读取目录时发生错误,ReadDir将返回它在错误发生前能够读取的条目以及错误。
	readDir, _ := os.ReadDir(tempDir)
	//声明tmpFiles,类型是[]string,目的是为了存储临时文件和文件夹的路径
	var tmpFiles []string
	//迭代循环出临时文件或文件夹的名字
	for _, entry := range readDir {
		//entry.Name返回条目所描述的文件(或子目录)的名称。
		//这个名称只是路径的最后一个元素(基本名称),而不是整个路径。
		//因此绝对路径就需要拼接。
		tmpFile := tempDir + "\\" + entry.Name()
		fmt.Println("temp file/folder : ",tmpFile)
		//将拼接好的绝对路径传递进tmpFiles
		tmpFiles = append(tmpFiles, tmpFile)
	}
	//最后返回tmpFiles
	return tmpFiles
}

// WaitPress 任意键退出
func WaitPress() {
	fmt.Println("work finish, press any key to exit...")
	b := make([]byte, 1)
	_, _ = os.Stdin.Read(b)
}

// DeleteTemp 主程序,删除临时文件夹和文件
func DeleteTemp() {
	//首先GetTempDirs()获取了临时文件或文件夹的绝对路径,类型是[]string
	//然后迭代查询出每个文件或文件夹的名字s
	for _, s := range GetTempDirs() {
		//os.RemoveAll函数可以删除路径及其包含的任何子路径。
		//如果路径不存在,RemoveAll返回nil(无错误)。如果有错误,它的类型将是*PathError。
		err := os.RemoveAll(s)
		if err != nil {
			fmt.Println("remove tmp error : ", err.Error())
		}else {
			fmt.Printf("delete temp sucess: %v \n", s)
		}
	}
	//执行完毕后,等待输入任意键退出,
	//在此处设置这个目的是为了检查删除情况.
	WaitPress()
}

func main() {
	DeleteTemp()
}

单元测试程序main_test.go

package main

import "testing"

func TestDeleteTemp(t *testing.T) {
	DeleteTemp()
}
func TestGetTempDirs(t *testing.T) {
	GetTempDirs()
}

生成可执行程序,并执行

执行效果


由于没有固定临时文件夹的路径,临时文件夹的位置是通过程序自动读取的,因此可移植性很高,生成的可执行程序也就可以放在任意台计算机上使用。

Tags:

本文暂时没有评论,来添加一个吧(●'◡'●)

欢迎 发表评论:

最近发表
标签列表