لغة Go بالأمثلة: الملفات والمجلدات المؤقتة

نحتاج غالبًا أثناء تنفيذ البرنامج إلى إنشاء بيانات لا نحتاجها بعد خروجه. تفيد الملفات والمجلدات المؤقتة لهذا الغرض، لأنها لا تكدّس البيانات في نظام الملفات بمرور الوقت.

package main
import (
    "fmt"
    "os"
    "path/filepath"
)
func check(e error) {
    if e != nil {
        panic(e)
    }
}
func main() {

أسهل طريقة لإنشاء ملف مؤقت هي استدعاء os.CreateTemp. فهي تنشئ ملفًا وتفتحه للقراءة والكتابة. نمرر "" بوصفه الوسيط الأول، لذلك ستنشئ os.CreateTemp الملف في الموقع الافتراضي لنظام التشغيل لدينا.

    f, err := os.CreateTemp("", "sample")
    check(err)

اعرض اسم الملف المؤقت. في أنظمة التشغيل المبنية على Unix، سيكون المجلد غالبًا /tmp. يبدأ اسم الملف بالبادئة الممررة وسيطًا ثانيًا إلى os.CreateTemp، ويُختار باقي الاسم تلقائيًا لضمان أن تنشئ الاستدعاءات المتزامنة أسماء ملفات مختلفة دائمًا.

    fmt.Println("Temp file name:", f.Name())

احذف الملف بعد الانتهاء. يُرجح أن ينظف نظام التشغيل الملفات المؤقتة بنفسه بعد مدة، لكن يُستحسن فعل ذلك صراحة.

    defer os.Remove(f.Name())

يمكننا كتابة بعض البيانات إلى الملف.

    _, err = f.Write([]byte{1, 2, 3, 4})
    check(err)

إذا كنا نعتزم كتابة ملفات مؤقتة كثيرة، فقد نفضل إنشاء مجلد مؤقت. وسائط os.MkdirTemp هي نفسها وسائط CreateTemp، لكنها تعيد اسم مجلد بدلًا من ملف مفتوح.

    dname, err := os.MkdirTemp("", "sampledir")
    check(err)
    fmt.Println("Temp dir name:", dname)
    defer os.RemoveAll(dname)

يمكننا الآن إنشاء أسماء ملفات مؤقتة داخل مجلدنا المؤقت.

    fname := filepath.Join(dname, "file1")
    err = os.WriteFile(fname, []byte{1, 2}, 0666)
    check(err)
}
$ go run temporary-files-and-directories.go
Temp file name: /tmp/sample610887201
Temp dir name: /tmp/sampledir898854668

المثال التالي: .