AzLearn

تمرين إعادة البناء

File Backup Copy

أعد كتابة برنامج Go ينسخ ملفا إلى نسخة احتياطية.

go ~18 دقيقة متوسط
أعد بناء الكود Rebuild

هذا هو الكود. اكتبه بنفسك.

الكود المرجعي
package main

import (
	"fmt"
	"io"
	"os"
	"path/filepath"
)

func copyFile(source, destination string) error {
	input, err := os.Open(source)
	if err != nil {
		return err
	}
	defer input.Close()

	output, err := os.Create(destination)
	if err != nil {
		return err
	}
	defer output.Close()

	_, err = io.Copy(output, input)
	return err
}

func main() {
	dir, err := os.MkdirTemp("", "go-rebuild-backup-*")
	if err != nil {
		fmt.Println("error:", err)
		return
	}
	defer os.RemoveAll(dir)

	source := filepath.Join(dir, "notes.txt")
	backup := filepath.Join(dir, "notes.txt.bak")

	if err := os.WriteFile(source, []byte("small tools deserve backups\n"), 0o644); err != nil {
		fmt.Println("error:", err)
		return
	}
	if err := copyFile(source, backup); err != nil {
		fmt.Println("error:", err)
		return
	}

	data, err := os.ReadFile(backup)
	if err != nil {
		fmt.Println("error:", err)
		return
	}
	fmt.Print(string(data))
}
اكتب هنا