כיצד לזהות נתיב מסופק הוא קובץ או ספרייה ב-Node.js?

Kyzd Lzhwt Ntyb Mswpq Hw Qwbz W Spryyh B Node Js



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

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

מאמר זה ימחיש את הגישות לזיהוי אם הנתיב שסופק הוא קובץ או ספריה על ידי כיסוי השיטות הבאות:







כיצד לזהות נתיב מסופק הוא קובץ או ספרייה ב-Node.js?

ישנן שתי שיטות הניתנות על ידי ' fs ' מודול כלומר ' isDirectory() 'ו' isFile() ' שמטרתו היחידה היא לבדוק אם הנתיב שסופק מוביל לקובץ או ספרייה. שיטות אלה משמשות הן בתרחישים סינכרוניים והן בתרחישים אסינכרוניים באמצעות ' statSync() 'ו' stat() ' שיטות. שתי השיטות הללו מוצגות להלן כדי לזהות אם הנתיב שסופק מוביל לקובץ או ספרייה.



שיטה 1: שיטת 'statSync()' לזיהוי הנתיב מוביל לספרייה או לקובץ

ה ' statSync() ' השיטה שסופקה על ידי ' fs ' מודול משמש בעצם לביצוע פעולות סינכרוניות. שיטה זו במקרה שלנו, מאחסנת את המופע של הנתיב שסופק פעם אחת בלבד. לאחר מכן, הוא מקצה את ' isDirectory() 'ו' isFile() ” שיטות כדי להחזיר אם הנתיב שצוין מוביל לספרייה או לקובץ.



בואו נבקר בקטע הקוד שלהלן ליישום מעשי של שיטת 'statSync()':





const fsObj = לִדרוֹשׁ ( 'fs' ) ;

תן pathFile = fsObj. statSync ( '/Users/kahou/Documents/readlineProj/mcu.db' ) ;

לְנַחֵם. עֵץ ( האם נתיב מסופק מוביל לקובץ? ' + pathFile. isFile ( ) ) ;

pathDir = fsObj. statSync ( '/Users/kahou/Documents/readlineProj' ) ;

לְנַחֵם. עֵץ ( האם נתיב מסופק מוביל לספרייה? ' + pathDir. isDirectory ( ) ) ;

ההסבר לקוד שסופק לעיל מצוין להלן:

  • ראשית, ייבא את ' fs ' מודול ואחסן את המופע שלו ב' fsObj 'משתנה.
  • לאחר מכן, הפעל את ' statSync() שיטת ' באמצעות ' fsObj ” משתנה ומעבירים את הנתיב שנבחר בתוך הסוגריים שלו. אחסן את ההפניה של נתיב זה בתוך ' pathFile 'משתנה.
  • לאחר מכן, הקצה את ' isFile() שיטת ' עם ' pathFile ' כדי להחזיר ערך בוליאני שיראה אם ​​הנתיב שסופק מוביל לקובץ או לא.
  • לאחר מכן, הפעל שוב את ' statSync() ” שיטה ולעבור את הדרך החדשה.
  • לבסוף, צרף את ' isDirectory() שיטת ' עם הערך המוחזר על ידי ' startSync() ' שיטה.

כעת, בצע את הקובץ הנוכחי באמצעות הפקודה הבאה:



'צומת <שם קובץ>'

לדוגמה, ביצענו את הקובץ 'app.js':

הפלט מציג את הערך של ' נָכוֹן ” מוחזר פירושו שהנתיבים שסופקו הם עבור התיקיה והקובץ זוהה.

שיטה 2: שיטת 'stat()' לזיהוי הנתיב מוביל לספרייה או לקובץ

שיטה נוספת שעובדת בצורה מושלמת עבור הסביבה האסינכרונית ידועה בשם ' stat() שיטת ' הניתנת על ידי ' fs ' מודול. הוא גם משתמש באותו ' isFile() 'ו' isDirectory() ” שיטות אך בשל אופיו האסינכרוני, ניתן להעביר את הנתיב היחיד לשתי השיטות. יש לו שני פרמטרים, הנתיב הראשון לאחסן והשני הוא פונקציית התקשרות חוזרת שמבצעת כמה פעולות על הנתיב שסופק:

const fsObj = לִדרוֹשׁ ( 'fs' ) ,
testPath = '/Users/kahou/Documents/readlineProj'

// השתמש בשיטת stat()
fsObj. סטט ( testPath , ( שְׁגִיאָה , statObj ) => {
אם ( ! שְׁגִיאָה ) {
אם ( statObj. isFile ( ) ) {
לְנַחֵם. עֵץ ( ' \n כן! נתיב מסופק מוביל לקובץ? ' ) ;
}
אַחֵר אם ( statObj. isDirectory ( ) ) {
לְנַחֵם. עֵץ ( ' \n כן! נתיב מסופק מוביל למדריך? ' ) ;
}
}
אַחֵר
לזרוק שְׁגִיאָה ;
} ) ;

ההסבר לקוד שסופק לעיל מוצג להלן:

  • ראשית, ייבא את ' fs ' מודול ואחסן את המופע שלו ב' fsObj 'משתנה. ליצור ' testPath ' משתנה המאחסן את הנתיב שסופק על ידי הבוחן.
  • כעת, קרא את ' stat() שיטת ' ועוברים את ' testPath ” כפרמטר הראשון ופונקציית callback כפרמטר השני.
  • פונקציית ההתקשרות חזרה מכילה ' שְׁגִיאָה 'כפרמטר הראשון ו' statObj ' בתור השני. ה ' שְׁגִיאָה ' מכיל שגיאות המתעוררות במהלך הביצוע ול-'startObj' יש את הנתיב המסופק.
  • בתוך הפונקציה, השתמש ב' אם ' משפט שפועל אם לא נמצאה שגיאה.
  • ה ' מקונן אם הצהרות ' משמשות כדי להקצות את ' isFile() ' ו' isDirectory() 'שיטות עם ' statObj '.
  • אם השיטות יחזרו ' נָכוֹן ' רק אז הקטע הזה מבוצע ומציג את הודעות ההצלחה בהתאם.

לאחר ביצוע הסקריפט לעיל, הטרמינל נראה כך:

כפי שאתה יכול לראות, הנתיב שסופק מזוהה כעת ומאשר שהנתיב שסופק מוביל לספרייה.

סיכום

כדי לזהות אם הנתיב שסופק הוא הנתיב של ספרייה או קובץ ב-NodeJs, השיטות של ' isFile() ' ו' isDirectory ' משומשים. הנתיבים הנגישים בשיטות אלה מסופקים על ידי ' statSync() ' ו' stat() ' שיטות של ' fs ' מודול NodeJs. שיטות אלה מאחסנות את הנתיבים המסופקים באופן סינכרוני וא-סינכרוני בהתאמה. בלוג זה הסביר את ההליך לזיהוי אם הנתיב שסופק מוביל לקובץ או ספרייה ב-NodeJS.