重命名非空文件夹

我正在尝试使用os.Rename(). 这是错误: directory not empty。是否可以强制重命名非空文件夹?


package main


import (

    "path/filepath"

    "log"

    "os"

    "strings"

)

var PATH = "dir/dir/"

/

func main() {

    err := filepath.Walk(PATH, printDir)

    if err != nil {

        log.Fatal(err)

    }

}


func printDir(path string, info os.FileInfo, err error) error {

    if err != nil {

        log.Fatal(err)

    }

    if info.IsDir() {

        arr := strings.Split(info.Name(), " ")

        if len(arr) > 1 {

            err := os.Rename(PATH + info.Name(), arr[0] + "_" + arr[1])

            if err != nil {

                log.Fatal(err)

            }

        }

    }

    return nil

}


慕村225694
浏览 249回答 1
1回答

慕姐4208626

我通过if err != nil { log.Fatal(err) }在printDir功能中取出来修复它。它以 1 个错误代码终止,因为每次运行该程序时,其中一个文件夹已被重命名。// Rename the folder name to format first_last.// Then delete all files in each folder that are not jpg extension.package mainimport (    "path/filepath"    "log"    "os"    "strings"    "fmt")var PATH = "dir/dir/dir"func main() {    err := filepath.Walk(PATH, printDir)    if err != nil {        log.Fatal(err)    }}func printDir(path string, info os.FileInfo, err error) error {    if info.IsDir() {        if !strings.Contains(info.Name(), "_") && len(strings.Split(info.Name(), " ")) > 1 {            os.Rename(PATH + info.Name(), PATH + strings.Replace(info.Name(), " ", "_", -1))        }    }    if !info.IsDir() {        fmt.Println(info.Name())    }    return nil}
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Go