Go语言项目:文件扫描与统计工具

项目名称:文件扫描与统计工具

项目描述:该项目可以对指定目录下的文件进行扫描和统计,并输出各种类型文件的数量、大小等信息。

技术栈:

        后端:Go语言

        其他:系统命令行工具

主要贡献:

  • 编写一个简单的Go语言程序,扫描指定目录下的所有文件,并输出各类型文件的数量、大小等信息。
  • 使用系统命令行工具读取用户输入的目录路径,并显示统计结果。
  • package main
    
    import (
    	"fmt"
    	"io/ioutil"
    	"log"
    	"os"
    	"path/filepath"
    	//使用import语句导入需要使用的外部包,
    	//分别是fmt、io/ioutil、log、os和path/filepath,
    	//分别用于输出信息、读取文件信息、输出日志信息、读取系统信息和处理文件路径信息
    )
    
        /*定义一个printFileStats函数,输入路径参数path,
        递归遍历该路径下所有的文件和子目录,打印每个文件的名称和大小等信息*/
    func printFileStats(path string) {
    	/*使用os.Stat获取指定路径的文件信息,如果出现错误(如文件不存在),
    	使用log.Printf输出错误信息*/
    	fileInfo, err := os.Stat(path)
    	if err != nil {
    		log.Printf("Failed to read file info for %s: %v", path, err)
    	}
        //如果该路径是一个目录,使用ioutil.ReadDir读取该目录下所有文件的信息
    	if fileInfo.IsDir() {
    		dirEntries, err := ioutil.ReadDir(path)
    		if err != nil {
    			log.Printf("Failed to read directory entries for %s: %v", path, err)
    		}
    
    		var dirCount, fileCount int
    		var dirSize, fileSize int64
    /*使用循环处理该目录下的每个文件或子目录,对文件使用printFileStats函数
       进行递归处理并统计目录下的文件数量、大小等信息*/
    		for _, entry := range dirEntries {
    			printFileStats(filepath.Join(path, entry.Name()))
    
    			if entry.IsDir() {
    				dirCount++
    				dirSize += entry.Size()
    			} else {
    				fileCount++
    				fileSize += entry.Size()
    			}
    		}
        //最后使用fmt.Printf输出目录的信息
    		fmt.Printf("Directory %s contains %d subdirectories, %d files (total size %d bytes)\n", path, dirCount, fileCount, dirSize+fileSize)
    	} else {
    		fmt.Printf("File %s has size %d bytes\n", path, fileInfo.Size())
    	}
    }
    
    func main() {
    	var path string
        /*在main函数中,读取用户输入的命令行参数指定的路径(如果没有输入参数,
    	则默认为当前目录),并将其传递给printFileStats函数进行处理*/
    	if len(os.Args) > 1 {
    		path = os.Args[1]
    	} else {
    		path = "." // default to current directory
    	}
    
    	printFileStats(path)
    }

    该项目涉及的主要知识点如下:

  • Go的函数和递归调用
  • 使用os包读取系统信息和文件信息
  • 使用ioutil包读取目录下的文件列表信息
  • 使用fmt包输出信息到标准输出
  • 使用log包输出日志信息到标准错误输出
  • 文件路径处理的基础知识
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

老实憨厚的腾锅锅

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值