Golang中系统提示找不到指定文件的解决方法
Golang中系统提示找不到指定文件的解决方法 一个系统文件路径(Windows)是
D:\Export\test.txt
但我收到错误信息
2019/09/30 16:49:35 rename D:\Export\test.txt D:\Export\test1.txt: 系统找不到指定的文件。 exit status 1
package main
import (
"log"
"os"
)
func main() {
originalPath := "D:\\Export\\test.txt"
newPath := "D:\\Export\\test1.txt"
err := os.Rename(originalPath, newPath)
if err != nil {
log.Fatal(err)
}
}
这是什么问题?
更多关于Golang中系统提示找不到指定文件的解决方法的实战教程也可以访问 https://www.itying.com/category-94-b0.html
我尝试了(1)和(3),运行良好(Go 1.13 和 Windows 10) 让我试试其他情况
更多关于Golang中系统提示找不到指定文件的解决方法的实战系列教程也可以访问 https://www.itying.com/category-94-b0.html
安德烈,很高兴你找到了解决方案,但我认为问题可能出在你使用的Go版本上。
我在Go 1.13环境下测试过,按照文档说明运行是正常的…
我只有一个分区。 然而我创建了一个虚拟驱动器后错误就出现了。 所以这个错误有两个来源:(1) 带有扩展字符并在同一驱动器中复制到另一个文件夹;(2) 移动到另一个驱动器(无论文件名是否包含扩展字符)
Yamil,你注意到你的使用案例没有反映不同磁盘驱动器情况吗?当你将文件移动到不同的磁盘驱动器时,例如从c:\移动到e:\?我认为在那里也会出现错误。
// 代码示例保留原样
使用场景(2)运行正常。 然而使用场景(4)显示以下错误:
2019/10/01 13:33:55 rename C:\push\торzz.txt C:\temp\zz01.txt: The system cannot find the file specified.
exit status 1
Yamil,这应该不是问题,因为 Go 内部使用 Unicode,所以重命名文件名不会带来任何改变。但为了确保无误,我尝试了操作,结果仍然相同(只是将文件移动到不同的磁盘驱动器,其他情况均无问题)。你确实尝试过同样的操作吗?
我在我的系统(Windows 10)上进行了测试,运行结果符合预期。我的意思是,当文件夹中存在文件时重命名操作正常,但当原始文件不存在时就会出现您提到的错误信息。 请检查原始文件是否存在…(我使用的是 Go 1.13)
// 代码示例保留原样
Yamil,这很奇怪,因为我也在使用1.13版本,但遇到了错误:
JPEG_example_down.jpg
originalPath = e:/торренты/JPEG_example_down.jpg
newPath = c:/go/JPEG_example_down.jpg
2019/10/01 19:09:59 rename e:/торренты/JPEG_example_down.jpg c:/go/JPEG_example_down.jpg: The system cannot move the file to a different disk drive.
exit status 1
安德烈,我们这里有几个不同的使用场景:
- 重命名文件名 - 仅更改文件名称并保持在同一文件夹中
- 重命名文件名 - 如你上次消息所述,使用扩展字符并保持在同一文件夹中
- 移动文件 - 仅更改文件位置和名称来移动文件
- 移动文件 - 使用扩展字符更改文件位置和名称来移动文件
让我们测试最简单的情况(1)。 请将 JPEG_example_down.jpg 改为 myJPG.jpg,以检查 go 函数是否按文档所述工作…
你是对的,但如果我将目标磁盘更改为
c:\
那么我会得到
系统无法将文件移动到不同的磁盘驱动器。
这个方法有什么问题?
是的,这在不同的驱动器上无法工作
func Rename(oldpath, newpath string) error {
from, err := syscall.UTF16PtrFromString(oldpath)
if err != nil {
return err
}
to, err := syscall.UTF16PtrFromString(newpath)
if err != nil {
return err
}
return MoveFileEx(from, to, MOVEFILE_REPLACE_EXISTING|MOVEFILE_COPY_ALLOWED)
}
这是一个解决方案
![]()
![]()
go语言 os.Rename() cannot move the file to a different disk drive 怎么办 | Ryan’s…
时值我小病在家休养生息,喜欢跳广场舞的外公来寻求我的帮助,他们跳广场舞是将存有歌曲的U盘插到音响上面,而音响大部分都是只能显示歌曲的索引in
这个错误通常表示在尝试重命名文件时,源文件 D:\Export\test.txt 不存在或路径不正确。在 Windows 系统中,路径分隔符可以使用双反斜杠 \\ 或正斜杠 /,但需要确保文件确实存在于指定路径。
以下是几种可能的原因和对应的解决方法:
- 检查文件是否存在:在调用
os.Rename前,先验证源文件是否存在。 - 使用正斜杠简化路径:Go 语言支持使用正斜杠作为路径分隔符,这在跨平台代码中更可靠。
- 检查文件权限:确保程序有权限访问该目录和文件。
修改后的代码示例,添加文件存在性检查:
package main
import (
"log"
"os"
)
func main() {
originalPath := "D:/Export/test.txt" // 使用正斜杠
newPath := "D:/Export/test1.txt"
// 检查源文件是否存在
if _, err := os.Stat(originalPath); os.IsNotExist(err) {
log.Fatalf("源文件不存在: %s", originalPath)
}
err := os.Rename(originalPath, newPath)
if err != nil {
log.Fatal(err)
}
}
如果文件确实存在,但仍出现错误,请检查:
- 文件是否被其他进程锁定(例如被文本编辑器打开)。
- 目录
D:\Export是否存在。 - 当前用户是否有足够的权限执行重命名操作。

