根据文档,使用Go-lang,os.Rename应该能够在任何操作系统上重命名文件或目录。

在Linux上,它可以正常工作,将文件或目录传递到其中,然后移动文件或目录。

在Windows上,我尝试传递文件夹时会收到“访问被拒绝”错误。
它适用于文件的100%。

例子:
源= c:\sourcefolder
目的地= c:\destinationfolder

来源包含:
C:\sourcefolder\file1.xml
C:\sourcefolder\file2.xml
C:\sourcefolder\foldername1
C:\sourcefolder\foldername1\file3.xml
C:\sourcefolder\foldername2
C:\sourcefolder\foldername2\file4.xml

file1.xml和file2.xml都将成功复制到c:\destination。
但是文件夹和文件夹中的文件崩溃,访问被拒绝

该脚本非常简单:

source := "C:\\sourcefolder"
destination := "C:\\destinationfolder"
pathSeperator := "\\"

files, err := ioutil.ReadDir(source)
    if err != nil {
    fmt.Println("Move command execution error: ", err)
    }

for _, f := range files {
    fmt.Println(f.Name())
    fmt.Println(f.Mode())
    err := os.Rename(source+pathSeperator+f.Name(), destination+pathSeperator+f.Name())
    if err != nil {
    fmt.Println("Move command execution error: ", err)
    panic(err)
    }
}

搜索了stackoverflow和golang的资源后,我发现了2016年列出的报告此错误的问题,并且根据该问题已得到解决,但是我无法使其正常工作。我没有其他地方可以找到列出此问题的 list golang。

检查f.Mode的访问权限,我得到drwxrwxrwx并具有对所有文件和目录的完全访问权限。

对此我的任何帮助都将非常有用。谢谢你。

最佳答案

从评论引述。解决了我的问题。

关于windows - Golang OS.Rename(<fromDir>,<toDir>)在Windows中不起作用,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/56075774/

10-10 07:00