0
0
GoHow-ToBeginner · 3 min read

How to Use os.WriteFile in Go: Simple File Writing

Use os.WriteFile in Go to write bytes to a file in one step. Provide the filename, data as a byte slice, and file permissions as arguments. It creates or overwrites the file and returns an error if something goes wrong.
📐

Syntax

The os.WriteFile function writes data to a file named by the filename. It takes three parameters:

  • filename: the path to the file as a string.
  • data: the content to write, as a byte slice ([]byte).
  • perm: file permissions, given as an octal number (e.g., 0644).

The function returns an error if writing fails.

go
func WriteFile(name string, data []byte, perm os.FileMode) error
💻

Example

This example shows how to write the string "Hello, Go!" to a file named hello.txt using os.WriteFile. It also checks for errors and prints a success message.

go
package main

import (
	"fmt"
	"os"
)

func main() {
	data := []byte("Hello, Go!\n")
	err := os.WriteFile("hello.txt", data, 0644)
	if err != nil {
		fmt.Println("Error writing file:", err)
		return
	}
	fmt.Println("File written successfully")
}
Output
File written successfully
⚠️

Common Pitfalls

Common mistakes when using os.WriteFile include:

  • Passing a string directly instead of converting it to []byte.
  • Using incorrect file permissions, which can cause permission errors.
  • Not checking the returned error, which can hide problems.

Always convert strings to bytes using []byte(yourString) and handle errors properly.

go
package main

import (
	"fmt"
	"os"
)

func main() {
	// Wrong: passing string directly (won't compile)
	// err := os.WriteFile("file.txt", "text", 0644)

	// Right: convert string to []byte
	err := os.WriteFile("file.txt", []byte("text"), 0644)
	if err != nil {
		fmt.Println("Error:", err)
	}
}
📊

Quick Reference

Remember these tips when using os.WriteFile:

  • Use []byte for data.
  • Set file permissions like 0644 for readable files.
  • Check the error returned to catch issues.
  • It overwrites existing files or creates new ones.

Key Takeaways

Use os.WriteFile to write byte slices to files in one step.
Always convert strings to []byte before writing.
Set correct file permissions to avoid access errors.
Check the error returned by os.WriteFile to handle failures.
os.WriteFile overwrites existing files or creates new ones automatically.