Avatar ·

كيفية التحقق من وجود ملف في Go؟

مرحباً بالجميع! أنا مطور مبتدئ في Go، وأكتب أداة صغيرة لمعالجة السجلات. أحتاج قبل فتح ملف التحقق مما إذا كان موجوداً على القرص. في Python اعتدت على استخدام os.path.exists()، لكن في Go لا أجد ما يعادله.

جربت استخدام os.Stat()، لكنني لست متأكداً من صحته. هذا هو الكود الحالي الخاص بي:

package main

import (
    "fmt"
    "os"
)

func main() {
    path := "/tmp/myfile.log"
    // Как проверить, существует ли файл?
    _, err := os.Stat(path)
    if err == nil {
        fmt.Println("Файл существует!")
    } else {
        fmt.Println("Файл не существует!")
    }
}

المشكلة أن os.Stat() يُرجع خطأً ليس فقط عندما لا يوجد الملف، بل أيضاً في حال مشاكل أخرى — مثل عدم وجود صلاحيات الوصول. أحصل على نتائج خاطئة. كيف أكتب التحقق بشكل صحيح؟ هل يجب استخدام os.IsNotExist()؟ أم يوجد طريقة خاصة في المكتبة القياسية؟