移动文件不能使用os.Rename。跨硬盘会出错,就如下的来写
import (
"fmt"
"io"
"os"
)
func MoveFile(sourcePath, destPath string) error {
inputFile, err := os.Open(sourcePath)
if err != nil {
return fmt.Errorf("Couldn't open source file: %s", err)
}
outputFile, err := os.Create(destPath)
if err != nil {
inputFile.Close()
return fmt.Errorf("Couldn't open dest file: %s", err)
}
defer outputFile.Close()
_, err = io.Copy(outputFile, inputFile)
inputFile.Close()
if err != nil {
return fmt.Errorf("Writing to output file failed: %s", err)
}
// The copy was successful, so now delete the original file
err = os.Remove(sourcePath)
if err != nil {
return fmt.Errorf("Failed removing original file: %s", err)
}
return nil
}
该代码示例展示了在Go语言中如何处理os.Rename无法跨硬盘移动文件的情况。通过打开源文件,创建目标文件,复制内容,然后删除源文件来实现文件移动。错误处理确保了每个步骤的可靠性。
552

被折叠的 条评论
为什么被折叠?



