Go – Delete File with os.Remove: Syntax, Safety & Examples (2025 Guide)
Introduction – Why Delete Files in Go?
In Go, you can delete a file using the os.Remove() function. Whether you’re cleaning up temp files, removing logs, or deleting user uploads, file removal is simple and effective with built-in tools from the os package.
In this guide, you’ll learn:
- How to delete files using
os.Remove - Handle missing file errors gracefully
- Check if file exists before deleting
- Best practices for secure file deletion
Example – Delete a File Using os.Remove
package main
import (
"fmt"
"os"
)
func main() {
err := os.Remove("example.txt")
if err != nil {
fmt.Println("Error:", err)
} else {
fmt.Println("File deleted successfully.")
}
}
Output:
File deleted successfully.
os.Remove() deletes the named file (or symbolic link) immediately.
Check If File Exists Before Deleting
if _, err := os.Stat("example.txt"); err == nil {
err := os.Remove("example.txt")
if err != nil {
fmt.Println("Delete failed:", err)
} else {
fmt.Println("Deleted file successfully")
}
} else {
fmt.Println("File does not exist")
}
Use os.Stat() to avoid trying to delete a file that’s not there.
Delete Directory or File with os.Remove
os.Remove("temp.txt") // Deletes a file
os.Remove("myfolder") // Deletes empty directory only
os.Remove() will not delete non-empty directories.
Remove All Files and Folders – os.RemoveAll
err := os.RemoveAll("tempdir")
if err != nil {
fmt.Println("Error deleting folder:", err)
} else {
fmt.Println("Directory deleted recursively")
}
os.RemoveAll() deletes a path and everything under it recursively—use with caution.
Handle Errors Like a Pro
| Error Type | What It Means |
|---|---|
file not found | File doesn’t exist |
permission denied | Insufficient rights to delete |
is a directory | Attempted to delete a folder with os.Remove |
Use errors.Is(err, os.ErrNotExist) for precise error checking.
Best Practices
| Tip | Why It Helps |
|---|---|
Use os.Stat() before Remove() | Avoid unnecessary errors |
| Handle permission errors | Helps in multi-user apps or services |
Don’t use RemoveAll() blindly | Prevents accidental recursive deletions |
| Log deleted file names | Useful for audit and debugging |
Summary – Recap & Next Steps
Go makes file deletion easy, safe, and powerful using just the os package. Whether deleting a single file or an entire folder tree, Go’s built-in functions are all you need.
Key Takeaways:
- Use
os.Remove()to delete single files or empty folders - Use
os.RemoveAll()for recursive deletion - Check file existence with
os.Stat()before deleting - Always handle and log errors clearly
Next: Learn about Creating and Renaming Files, Working with Temp Files, or explore File Permission Handling in Go.
FAQs – Go Delete File
What does os.Remove() do in Go?
It deletes the specified file or an empty directory.
How can I delete a folder and all its content?
Use os.RemoveAll("folder_name").
What if I try to delete a file that doesn’t exist?
You’ll get an error. Use os.Stat() to check beforehand.
Can I delete open files in Go?
Yes, but the OS may prevent it if the file is currently in use.
Is os.Remove() thread-safe?
File deletion is safe in general, but always coordinate in concurrent code.
Share Now :
