#os.Rename() not renaming my file

3 messages · Page 1 of 1 (latest)

granite skiff
#

So im trying to build a functionality using os.Rename() that will reorder my file names but im not sure why it isnt working. Does someone have any idea why?

func reorderUserFiles() {
    files, prefixes, _ := getDirFilenames(true)

    for i, file := range files {

        if prefixes[i] > 0 && prefixes[i] != prefixes[i-1]+1 {
            fmt.Println("File is different", prefixes[i])

            absFname, _ := filepath.Abs(file)
            fmt.Println("absFilename =>", absFname)
            idxBeginFile := strings.LastIndex(absFname, "/")
            newFileName := absFname[:idxBeginFile] + "/" + fmt.Sprintf("%04d", prefixes[i-1]+1) + file[4:]
            fmt.Println("absFname => ", absFname)
            fmt.Println("nfName => ", newFileName)
            err := os.Rename(absFname, newFileName)
            if err != nil {
                fmt.Println(err)
                return
            } else {
                fmt.Println(FmtGreen("File succesfully renamed"))
            }
        }
    }
}

Output:

File is different 9
absFilename => /home/victor/Projetos/golang/go-migrations/0009.teste.sql
absFname =>  /home/victor/Projetos/golang/go-migrations/0009.teste.sql
nfName =>  /home/victor/Projetos/golang/go-migrations/0003.teste.sql
rename /home/victor/Projetos/golang/go-migrations/0009.teste.sql /home/victor/Projetos/golang/go-migrations/0003.teste.sql: no such file or directory```
wary latch
#

At first I would recommend to check if file '/home/victor/Projetos/golang/go-migrations/0009.teste.sql' really exists.

tired sentinel
#

please don't use strings to operate paths, use path/filepath instead