温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

怎么在Go中利用递归对文件名进行修改

发布时间:2021-01-08 16:13:20 来源:亿速云 阅读:170 作者:Leah 栏目:开发技术

本篇文章为大家展示了怎么在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中利用递归对文件名进行修改,你们学到知识或技能了吗?如果还想学到更多技能或者丰富自己的知识储备,欢迎关注亿速云行业资讯频道。

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI