Go – File Handling
Estimated reading: 3 minutes 25 views

✂️ Go – Truncate File with os.Truncate: Syntax, Examples & Safety (2025 Guide)

🧲 Introduction – Why Truncate a File in Go?

In Go, you can truncate (cut down) a file using the built-in os.Truncate() function. This is useful when you want to:

  • Clear the contents of a log or temp file
  • Limit file size for memory or disk usage
  • Reset a file without deleting it

🎯 In this guide, you’ll learn:

  • How to truncate a file in Go
  • Set file size to 0 or custom length
  • Handle permission and file-not-found errors
  • Real-world use cases and safety tips

✅ Example – Truncate File to Zero Bytes

package main

import (
    "fmt"
    "os"
)

func main() {
    err := os.Truncate("log.txt", 0)
    if err != nil {
        fmt.Println("Truncate failed:", err)
    } else {
        fmt.Println("File truncated successfully.")
    }
}

📤 Output:

File truncated successfully.

✅ This clears all content in log.txt by setting its size to 0.


🧪 Truncate File to Custom Size

err := os.Truncate("data.txt", 10)

✅ Keeps the first 10 bytes of the file and discards the rest.
⚠️ If the file is smaller than 10 bytes, it will be padded with null bytes.


📂 Check If File Exists Before Truncating

if _, err := os.Stat("log.txt"); os.IsNotExist(err) {
    fmt.Println("File does not exist")
} else {
    os.Truncate("log.txt", 0)
}

✅ Prevents unnecessary os.Truncate call on non-existent files.


🔒 Common Errors & Handling

Error TypeCause
file not foundThe file path doesn’t exist
permission deniedNo write access to the file
invalid argumentNegative size provided

✅ Always validate path and permissions before truncating.


🛠 Alternative – Truncate via File Object

file, err := os.OpenFile("temp.txt", os.O_WRONLY, 0644)
if err != nil {
    panic(err)
}
defer file.Close()

err = file.Truncate(0)

✅ Useful if you already have an os.File object open.


🧠 Best Practices

TipWhy It Helps
✅ Use os.Truncate() for quick resetsEfficient log cleanup without delete+recreate
✅ Always check file access rightsPrevent runtime errors
❌ Don’t truncate open shared filesMay affect other processes
✅ Log truncation actionsFor audit and debugging

📌 Summary – Recap & Next Steps

Go’s os.Truncate() offers a clean and efficient way to shrink or clear files. It’s great for log rotation, resetting cache, or cleaning up large output files without deleting them.

🔍 Key Takeaways:

  • os.Truncate("file.txt", 0) clears the file
  • You can keep the first N bytes with a custom size
  • Handles padding or shrinking depending on target length
  • Use error handling and file checks for safe operation

⚙️ Next: Explore Appending to Files, File Rotation, or Managing Temp Files in Go.


❓ FAQs – Go Truncate File

❓ What does os.Truncate() do in Go?
✅ It sets the file’s size to the specified number of bytes, trimming or padding as needed.

❓ Will truncating a file delete it?
❌ No. It clears the content, but the file still exists.

❓ How can I reset a log file?
✅ Use os.Truncate("log.txt", 0) to empty it.

❓ Can I truncate a file that is being read by another process?
⚠️ Yes, but be careful—other processes may crash or behave unpredictably.

❓ What happens if the file doesn’t exist?
os.Truncate() returns an error. Use os.Stat() to check existence first.


Share Now :

Leave a Reply

Your email address will not be published. Required fields are marked *

Share

Go Truncate File

Or Copy Link

CONTENTS
Scroll to Top