1. 程式人生 > 程式設計 >Go遞迴修改檔名的例項程式碼

Go遞迴修改檔名的例項程式碼

在生活中我們往往有這樣的需求,就是從網上找的檔案資源經常包含了一些無用資訊,而且在它的子目錄下也同樣存在,如果我們手動一個個的修改的話會特別麻煩,也特別耗時,我們可以考慮把這件事交給計算機來做。
如下圖,我的桌面有一個名為dir【我愛你】的目錄,而且這個目錄下的子目錄和檔案都包含【我愛你】,這個【我愛你】對於我們來說是完全無用的,我們可以用Go的檔案操作庫來遞迴對檔案進行重新命名,把不需要的名字替換為空

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(),new,-1))
			if err != nil {
				return err
			}
		} else {
			err = os.Rename(path+pathSeparator+fileInfo.Name(),-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,-1)

	//3.遞迴呼叫重新命名
	err := rename(filePath,name,"")
	if err != nil {
		log.Fatalf("發生錯誤,錯誤為:%v\n",err)
	}
	err = os.Rename(filePath,strings.Replace(filePath,-1))
	if err != nil {
		log.Fatalf("發生錯誤,錯誤為:%v\n",err)
	}

	fmt.Println("success")
}

執行程式碼

Go遞迴修改檔名的例項程式碼

檢視結果

Go遞迴修改檔名的例項程式碼

到此這篇關於Go遞迴修改檔名的例項程式碼的文章就介紹到這了,更多相關Go修改檔名內容請搜尋我們以前的文章或繼續瀏覽下面的相關文章希望大家以後多多支援我們!