根据文档,使用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/