"إذا أراد العامل أن يؤدي عمله بشكل جيد، فعليه أولاً أن يشحذ أدواته." - كونفوشيوس، "مختارات كونفوشيوس. لو لينجونج"
الصفحة الأمامية > برمجة > كيف يمكنني اكتشاف تغييرات الملف في GO باستخدام استطلاع الحالة؟

كيف يمكنني اكتشاف تغييرات الملف في GO باستخدام استطلاع الحالة؟

نشر في 2025-02-16
تصفح:758

How Can I Detect File Changes in Go Using Status Polling?

اكتشاف تغييرات الملف في GO باستخدام استطلاع الحالة

على الرغم من أن GO لا تقدم مكافئًا مباشرًا لوظيفة UNIX FCNTL () لإخطارات تغيير الملف ، فإن استطلاع الحالة يوفر حلًا متقاطعًا:

initialStat ، ERR: = OS.Stat (FilePath) إذا خطأ! = لا شيء { إرجاع خطأ } ل { STAT ، ERR: = OS.STAT (FilePath) إذا خطأ! = لا شيء { إرجاع خطأ } إذا stat.size ()! = initialStat.size () || Stat.Modtime ()! = initialStat.Modtime () { استراحة } time.sleep (1 * time.second) } العودة لا شيء }

func watchFile(filePath string) error {
    initialStat, err := os.Stat(filePath)
    if err != nil {
        return err
    }

    for {
        stat, err := os.Stat(filePath)
        if err != nil {
            return err
        }

        if stat.Size() != initialStat.Size() || stat.ModTime() != initialStat.ModTime() {
            break
        }

        time.Sleep(1 * time.Second)
    }

    return nil
}

donechan Go Func (Donechan Chan Bool) { تأجيل func () { Duechan

doneChan := make(chan bool)

go func(doneChan chan bool) {
    defer func() {
        doneChan 
أحدث البرنامج التعليمي أكثر>

تنصل: جميع الموارد المقدمة هي جزئيًا من الإنترنت. إذا كان هناك أي انتهاك لحقوق الطبع والنشر الخاصة بك أو الحقوق والمصالح الأخرى، فيرجى توضيح الأسباب التفصيلية وتقديم دليل على حقوق الطبع والنشر أو الحقوق والمصالح ثم إرسالها إلى البريد الإلكتروني: [email protected]. سوف نتعامل مع الأمر لك في أقرب وقت ممكن.

Copyright© 2022 湘ICP备2022001581号-3