(src, dst string)
| 283 | } |
| 284 | |
| 285 | func MoveFile(src, dst string) error { |
| 286 | // Try atomic rename first. |
| 287 | if err := os.Rename(src, dst); err == nil { |
| 288 | return nil |
| 289 | } |
| 290 | |
| 291 | // Fallback to copy+delete mode. |
| 292 | if err := fileCopy(src, dst); err != nil { |
| 293 | return err |
| 294 | } |
| 295 | return os.Remove(src) |
| 296 | } |
| 297 | |
| 298 | func fileCopy(src, dst string) error { |
| 299 | // Close src file after copy. |
no test coverage detected