• 企业400电话
  • 微网小程序
  • AI电话机器人
  • 电商代运营
  • 全 部 栏 目

    企业400电话 网络优化推广 AI电话机器人 呼叫中心 网站建设 商标✡知产 微网小程序 电商运营 彩铃•短信 增值拓展业务
    Go递归修改文件名的实例代码

    在生活中我们往往有这样的需求,就是从网上找的文件资源经常包含了一些无用信息,而且在它的子目录下也同样存在,如果我们手动一个个的修改的话会特别麻烦,也特别耗时,我们可以考虑把这件事交给计算机来做。
    如下图,我的桌面有一个名为dir【我爱你】的目录,而且这个目录下的子目录和文件都包含【我爱你】,这个【我爱你】对于我们来说是完全无用的,我们可以用Go的文件操作库来递归对文件进行重命名,把不需要的名字替换为空

    示例代码:

    package main
    
    import (
    	"bufio"
    	"fmt"
    	"io/ioutil"
    	"log"
    	"os"
    	"strings"
    )
    
    var pathSeparator = string(os.PathSeparator)
    
    /**
     * 文件重命名
     */
    func rename(path string, old string, new string) (err error) {
    	files, err := ioutil.ReadDir(path)
    	if err != nil {
    		return err
    	}
    	for _, fileInfo := range files {
    		if fileInfo.IsDir() {
    			err = rename(path+pathSeparator+fileInfo.Name(), old, new)
    			if err != nil {
    				return err
    			}
    			err = os.Rename(path+pathSeparator+fileInfo.Name(), path+pathSeparator+strings.Replace(fileInfo.Name(), old, new, -1))
    			if err != nil {
    				return err
    			}
    		} else {
    			err = os.Rename(path+pathSeparator+fileInfo.Name(), path+pathSeparator+strings.Replace(fileInfo.Name(), old, new, -1))
    			if err != nil {
    				return err
    			}
    		}
    	}
    	return err
    }
    
    func main() {
    
    	//1.获取要被重命名目录(文件)的绝对路径
    	fmt.Print("请输入文件的绝对路径:")
    	reader := bufio.NewReader(os.Stdin)
    	filePath, _ := reader.ReadString('\n')
    	filePath = strings.Replace(filePath, "\n", "", -1)
    
    	//2.获取要被替换掉的名称
    	fmt.Print("请输入要被替换为空的名称:")
    	reader = bufio.NewReader(os.Stdin)
    	name, _ := reader.ReadString('\n')
    	name = strings.Replace(name, "\n", "", -1)
    
    	//3.递归调用重命名
    	err := rename(filePath, name, "")
    	if err != nil {
    		log.Fatalf("发生错误,错误为:%v\n", err)
    	}
    	err = os.Rename(filePath, strings.Replace(filePath, name, "", -1))
    	if err != nil {
    		log.Fatalf("发生错误,错误为:%v\n", err)
    	}
    
    	fmt.Println("success")
    }

    运行代码

    查看结果

    到此这篇关于Go递归修改文件名的实例代码的文章就介绍到这了,更多相关Go修改文件名内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

    您可能感兴趣的文章:
    • go build 通过文件名后缀实现不同平台的条件编译操作
    • Go并发:使用sync.WaitGroup实现协程同步方式
    • go等待一组协程结束的操作方式
    • SpringBoot整合MongoDB实现文件上传下载删除
    • golang协程池模拟实现群发邮件功能
    • Go 如何批量修改文件名
    上一篇:详解Golang语言中的interface
    下一篇:Golang实现http server提供压缩文件下载功能
  • 相关文章
  • 

    © 2016-2020 巨人网络通讯 版权所有

    《增值电信业务经营许可证》 苏ICP备15040257号-8

    Go递归修改文件名的实例代码 递归,修改,文件名,的,实例,