קוראים כמוך עוזרים לתמוך ב-MUO. כאשר אתה מבצע רכישה באמצעות קישורים באתר שלנו, אנו עשויים להרוויח עמלת שותף. קרא עוד.

עבודה עם קבצים וספריות היא משימה חיונית עבור יישומים שצריכים לאחסן ולאחזר נתונים. Go מספקת את חבילת filepath עבור פעולות נתיב קבצים בלתי תלויות בפלטפורמה. החבילה כוללת פונקציות לתפעול נתיבי קבצים והיא תואמת ל-Windows, Linux ו-macOS.

הפונקציות ש-filpath כוללות יכולות להצטרף, לפצל ולנקות נתיבי קבצים כדי להבטיח שהם תקפים. בחבילה יש גם פונקציות להליכה בספריות וחיפוש קבצים.

עצי ספריות הליכה

ה לָלֶכֶת פונקציה של נתיב קובץ החבילה מספקת פונקציונליות להליכה על עץ ספריות ולמעבר בין קבצים וספריות בהזמנה מראש. הוא יבקר באופן רקורסיבי בכל המדריכים מתחת לשורש הנתון. הפונקציה Walk לוקחת ספריית שורש ופונקציה שמקבלת את הנתיב, מופע פרטי הקובץ ומופע שגיאה.

חֲבִילָה רָאשִׁי

יְבוּא (
"fmt"
"נתיב/נתיב קובץ"
"os"
)

funcרָאשִׁי() {
// מגדיר את ספריית השורש כדי להתחיל את ההליכה
שורש := "."

// משתמש בפונקציית Walk כדי ללכת על עץ הספריות
שגיאה := נתיב קובץ. ללכת (שורש, func(נָתִיב חוּט, OS מידע. FileInfo, שגיאה)שְׁגִיאָה {
אם טעות != אֶפֶס {
לַחֲזוֹר לִטְעוֹת
}

instagram viewer

// מדפיס את השם של כל קובץ או ספרייה
fmt. Println (נתיב)
לַחֲזוֹראֶפֶס
})

// בודק שגיאות
אם טעות != אֶפֶס {
fmt. Printf("שגיאה בהליכת עץ ספריות: %v\n", טעות)
}
}

תוכנית זו מגדירה את ספריית השורש כספריית העבודה הנוכחית. ה רָאשִׁי הפונקציה עוברת דרך הספריות בספריית השורש ומדפיסה את שמות הקבצים.

התאמת קבצים עם התאמת דפוסים

אתה יכול להשתמש ב התאמה פונקציה כדי להתאים שמות קבצים לתבנית. תחביר הדפוס מבוסס על המשותף תחביר תווים כלליים לקובץ, המשתמש בתווים מטא, המכונה תבניות גלוב בסביבות יוניקס.

חֲבִילָה רָאשִׁי

יְבוּא (
"fmt"
"נתיב/נתיב קובץ"
)

funcרָאשִׁי() {
// מגדיר את התבנית שתתאים
דפוס := "*.טקסט"

// משתמש בפונקציית Match כדי להתאים את התבנית בקבצים
התאמה, שגיאה := נתיב קובץ. התאמה (דפוס, "file.txt")

אם טעות != אֶפֶס {
fmt. Printf("שגיאה בהתאמת דפוס: %v\n", טעות)
לַחֲזוֹר
}

// מדפיס את תוצאת המשחק
אם התאמה {
fmt. Println("הקובץ תואם לדפוס.")
} אַחֵר {
fmt. Println("הקובץ אינו תואם לדפוס.")
}
}

ה רָאשִׁי הפונקציה תואמת שם קובץ מול ה- *.טקסט דפוס ומדפיס מחרוזת בהתאם לתוצאה של ההצהרה המותנית.

ניקוי שבילי עם פונקציית הניקוי

ה לְנַקוֹת הפונקציה לוקחת נתיב קובץ ומחזירה גרסה מנוקה של נתיב על ידי הסרת מפרידים מיותרים ושינויי ספריות, כגון . (ספרייה נוכחית) ו .. (ספריית אב) מקטעים.

ניקוי נתיבים של קבצים שימושי מכיוון שהוא עוזר למנוע שגיאות אם נתיב מכיל מפרידים מיותרים או מקטעים לא חוקיים, או בונה נתיבים בלתי תלויים בספריית העבודה הנוכחית.

חֲבִילָה רָאשִׁי

יְבוּא (
"fmt"
"נתיב/נתיב קובץ"
)

funcרָאשִׁי() {
// יוצר נתיב עם מפרידים מיותרים ומקטעים לא חוקיים
נתיב := "/foo/bar//baz/.././qux/"

// מנקה את הנתיב
cleanPath := נתיב קובץ. נקי (נתיב)

// מדפיס את נתיב הקובץ המקורי והנקה
fmt. Println("נתיב מקורי:", נתיב)
fmt. Println("נתיב נקי:", cleanPath)
}

ה נָתִיב המשתנה הוא נתיב הקובץ הראשוני, וה- לְנַקוֹת הפונקציה מנקה את נָתִיב משתנה ומחזירה את נתיב הקובץ הנוקה. ה רָאשִׁי הפונקציה מדפיסה את נתיב הקובץ הראשוני והנקי.

הצטרפות ופיצול נתיבי קבצים ב-Go

ה לְהִצְטַרֵף ו לְפַצֵל פונקציות מספקות פונקציונליות להצטרפות ופיצול נתיבי קבצים.

הפונקציה Join לוקחת כל מספר של רכיבי נתיב. היא מחזירה מחרוזת נתיב קובץ בודדת הנובעת משרשור רכיבים אלה באמצעות מפריד הנתיבים המתאים למערכת ההפעלה. ה לְהִצְטַרֵף הפונקציה שימושית לבניית נתיבי קבצים ללא תלות במערכת הקבצים הבסיסית.

חֲבִילָה רָאשִׁי

יְבוּא (
"fmt"
"נתיב/נתיב קובץ"
)

funcרָאשִׁי() {
// מגדיר ארבעה נתיבי קבצים עבור פעולת הצטרפות
נתיב1 := "תיקייה 1"
נתיב2 := "תיקייה 2"
נתיב3 := "תת תיקיית 1"
נתיב4 := "example.txt"

// מצרף את ארבעת נתיבי הקבצים יחד לנתיב אחד
joinedPath := נתיב קובץ. הצטרפות (נתיב1, נתיב2, נתיב3, נתיב4)

// הדפס את נתיב הקובץ המאוחד
fmt. Println("נתיב הצטרף:", joinedPath)
}

ה נתיב 1, נתיב2, ו נתיב 3 משתנים הם שמות תיקיות, וה- נתיב 4 משתנה הוא שם קובץ. ה לְהִצְטַרֵף הפונקציה לוקחת את שמות משתני הנתיב ומחזירה את נתיב הקובץ המשורשר. ה רָאשִׁי הפונקציה מדפיסה את נתיב הקובץ המשורשר לקונסולה עם ה- fmt חֲבִילָה.

ה לְפַצֵל הפונקציה לוקחת מחרוזת נתיב ומחזירה את רכיבי הספרייה ושם הקובץ של הנתיב. ה לְפַצֵל הפונקציה שימושית לחילוץ שמות קבצים או לקביעת ספריית האב של קובץ.

חֲבִילָה רָאשִׁי

יְבוּא (
"fmt"
"נתיב/נתיב קובץ"
)

funcרָאשִׁי() {
// מגדיר את נתיב הקובץ עבור פעולת הפיצול
filePath := "/home/user/documents/example.txt"

// השתמש בפונקציה Split כדי לפצל את נתיב הקובץ
// לרכיבי הספרייה והקובץ שלו
dir, file := filepath. פיצול (קובץ נתיב)

// הדפס את רכיבי הספרייה והקובץ
fmt. Println("מַדרִיך:", dir)
fmt. Println("קוֹבֶץ:", קובץ)
}

ה filePath המשתנה הוא נתיב הקובץ המקורי, וה- לְפַצֵל הפונקציה לוקחת את filePath משתנה ומחזירה את הספרייה ושמות הקבצים כמחרוזות. ה רָאשִׁי הפונקציה מדפיסה את שמות הספריות והקבצים למסוף.

אתה יכול לתפעל קבצי טקסט עם Go

לצד פונקציונליות של מערכת הקבצים, Go מספקת חבילות שיעזרו לך לעבוד עם סוגי קבצים מרובים, כולל קבצי טקסט.

אתה יכול להשתמש ב bufio חבילה לפעולות קלט ופלט מאוחסנות בקובצי טקסט וב- OS חבילה ליצירת קבצים, בין שאר הפעולות.