Go – File Handling
Estimated reading: 3 minutes 296 views

Go – Rename or Move File with os.Rename: Syntax, Use Cases & Tips (2025 Guide)

Introduction – Why Rename or Move Files in Go?

In Go, you can rename or move files and folders using the os.Rename() function. It’s a simple and effective way to handle file system operations like file uploads, log rotation, or organizing file structures dynamically.

In this guide, you’ll learn:

  • How to rename files using os.Rename
  • Move files and directories across locations
  • Handle errors and platform-specific quirks
  • Best practices for safe and atomic operations

Basic Example – Rename a File

package main

import (
    "fmt"
    "os"
)

func main() {
    oldPath := "old.txt"
    newPath := "new.txt"

    err := os.Rename(oldPath, newPath)
    if err != nil {
        fmt.Println("Error:", err)
    } else {
        fmt.Println("File renamed successfully.")
    }
}

Output:

File renamed successfully.

os.Rename() renames the file from old.txt to new.txt.


Move a File to Another Directory

err := os.Rename("report.txt", "archive/report.txt")
if err != nil {
    fmt.Println("Move failed:", err)
}

Works as a move operation too—renames path across folders.

Note: The target directory must exist, or the call fails.


Rename/Move a Folder

err := os.Rename("old_folder", "new_folder")

Renames folders as well. It’s just a path change—no file contents are touched.


Handle Rename Errors Gracefully

if _, err := os.Stat("old.txt"); os.IsNotExist(err) {
    fmt.Println("File does not exist")
} else if err := os.Rename("old.txt", "new.txt"); err != nil {
    fmt.Println("Rename failed:", err)
}

Always check file existence and handle common errors like permission denied.


Windows vs Unix Behavior

PlatformNotes
Linux/macOSAllows replacing the target if it exists
WindowsFails if the destination already exists (use custom logic)

Move Across File Systems (Advanced)

os.Rename() may fail if source and destination are on different devices.

In that case:

  1. Use io.Copy() to copy the file.
  2. Delete the source file.

Best Practices

TipWhy It Matters
Ensure destination path existsPrevents “no such directory” error
Avoid overwriting unless neededProtects data from accidental loss
Don’t rely on atomicity across FSos.Rename not guaranteed across devices
Use logs for audit trailsUseful in file-processing systems

Summary – Recap & Next Steps

Go makes renaming and moving files simple and cross-platform with os.Rename(). It’s ideal for use cases like log rotation, file uploads, and organizing backups.

Key Takeaways:

  • Use os.Rename(oldPath, newPath) to rename or move files
  • Moving and renaming is the same under the hood
  • Works for both files and folders
  • May fail across file systems or if the destination path is invalid

Next: Learn How to Copy Files, Check if File Exists, or Handle Temp Files in Go.


FAQs – Go Rename & Move File

What function is used to rename a file in Go?
Use os.Rename(oldPath, newPath).

Can I move a file across directories with os.Rename()?
Yes, as long as both paths are on the same file system.

What happens if the destination file already exists?
On Unix, it’s replaced. On Windows, the operation fails.

Can I rename a folder using the same function?
Yes. Folders can be renamed just like files.

How do I move a file across different file systems?
Use io.Copy() + os.Remove() to copy and delete manually.


Share Now :
Share

Go Rename & Move File

Or Copy Link

CONTENTS
Scroll to Top