מדריך בסיסי למניפולציה של מערכת הקבצים ב-Node.js

מדריך בסיסי למניפולציה של מערכת הקבצים ב-Node.js

אחת התכונות המובנות של Node.js היא מניפולציה של מערכת הקבצים של מערכת ההפעלה באמצעות מודול fs. מודול Node.js זה מכיל פונקציות שימושיות רבות לעבודה עם קבצים וספריות.





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





איפור של סרטון היום

אז, מהי מערכת קבצים, וכיצד ניתן ליצור אינטראקציה בקלות עם מערכת הקבצים של מערכת הפעלה ב-Node.js?





מהי מערכת קבצים?

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

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



כמה דוגמאות למערכות קבצים כוללות New Technology File System (NTFS), UNIX File System (UFS) ו-Hierarchical File System (HFS).

מה לעשות עם מסכי מסך שטוח ישנים

מהו מודול fs Node.js?

ה-Node.js fs module היא ספרייה מובנית המסופקת על ידי Node.js לעבודה עם מערכת הקבצים של כל מערכת הפעלה שתומכת ב-Node. ה fs מודול נגיש בקלות ומהווה את הספרייה הרצויה עבור פעולות קבצים כמו קריאה מקבצים אוֹ כתיבת נתונים לקבצים ב-Node.js .





זה מאוד נפוץ עם נָתִיב ו אתה מודולים לביצוע פעולות שונות בקבצים. כדי להשתמש ב fs מודול בתוכניות שלך, אתה יכול לייבא אותו לקוד המקור שלך כפי שמוצג בקוד למטה.

// CommonJS 
const fs = require('fs')

// ES6
import fs from 'fs'

מהו מודול הנתיב של Node.js?

אתה יכול להשתמש ב-Node.js נָתִיב מודול לתמרן נתיבי קבצים. הוא כולל כלי עזר ליצירת אינטראקציה קלה עם נתיבים של קבצים וספריות. משתמש ב fs ו נָתִיב מודולים במקביל להשלמת משימה היא תרגול סטנדרטי. הסיבה לכך היא שרוב fs פונקציות המודול תלויות בנתיבים לקבצי יעד או ספריות לתפקוד.





אתה יכול לייבא את נָתִיב מודול לתוך הקוד שלך עם התחביר שלהלן:

// CommonJS 
const path = require('path')

// ES6
import path from 'path'

פונקציות נפוצות לגישה למערכת הקבצים ב-Node.js

להלן ה-Node.js הנפוצים ביותר fs ו נָתִיב פונקציות מודול, וכיצד להשתמש בהן כדי ליצור אינטראקציה עם קבצים וספריות.

עבודה עם נתיבים

  1. path.resolve: זוהי הפונקציה לפתרון נתיב מתוך רשימה של הוראות נתיב המועברות כפרמטרים. לדוגמה:
    path.resolve('home', 'projects', 'web'); 
    // returns <path_to_current_directory>/home/projects/web

    path.resolve('home/projects/web', '../mobile');
    // returns <path_to_current_directory>/home/projects/mobile
  2. path.normalize: ה לנרמל הפונקציה מחזירה את הנתיב הנכון והמנורמל מנתיב קלט נתון. לדוגמה:
    path.normalize('home/projects/web/../mobile/./code'); 
    // returns home/projects/mobile/code
  3. path.join: פונקציה זו בונה נתיב ממספר מקטעים. לדוגמה:
    path.join('home', 'projects', '../', 'movies'); 
    // returns home/movies
  4. path.basename: ה שם בסיס הפונקציה מחזירה את קטע הנתיב הסופי. אתה יכול להשתמש בו בשתי דרכים:
    path.basename('home/projects/web/index.js'); 
    // returns index.js

    path.basename('home/projects/web/index.js', '.js');
    // removes the extension and returns 'index'
  5. path.dirname: פונקציה זו מחזירה את הנתיב לספרייה האחרונה של נתיב נתון. דוגמה:
    path.dirname('home/projects/web/index.js'); 
    // returns home/projects/web
  6. path.extname: עם פונקציה זו, אתה יכול לקבל סיומת של קובץ מנתיב נתון.
    path.extname('home/projects/web/index.js'); 
    // returns '.js'

פתיחה וסגירה של קבצים

  1. fs.open: זוהי הפונקציה לפתיחה או יצירת קובץ באופן סינכרוני ב-Node.js. הצורה הסינכרונית של fs.open הוא fs.openSync . fs.open a מקבל ארבעה ארגומנטים שהם נתיב הקובץ, דגלים, מצב פתיחה ופונקציית התקשרות חוזרת. דגלים ו לִפְתוֹחַ מצב יש ערך ברירת מחדל, וייתכן שתוכל ללמוד עליהם יותר מה- Node.js fs.open תיעוד.
    const filePath = path.join(__dirname, '/videos/newVideo.mp4'); 
    // __dirname returns the path to the current working directory.
    // filePath = <path_to_current_directory>/videos/newVideo.mp4

    fs.open(filePath, (error, fileDescriptor) => {
    // handle errors
    console.log(fileDescriptor); // prints an integer representing the file descriptor
    })
  2. fs.close: מומלץ תמיד לסגור קבצים פתוחים כאשר אין בהם עוד צורך. ל-Node.js יש את fs.close פונקציה עבור זה:
    fs.open(filePath, (error, fileDescriptor) => { 
    // handle errors, such as 'file/directory does not exist'
    console.log(fileDescriptor);

    // close the file
    fs.close(fileDescriptor, (error) => {
    // handle errors
    console.log('File closed successfully');
    });
    })

יצירה ומחיקה

  1. fs.mkdir: זה עובד בדיוק כמו ה mkdir פקודת מסוף שיוצרת ספרייה חדשה. הוא תופס נתיב, מצב (אופציונלי) ופונקציית התקשרות חוזרת כפרמטרים. אתה יכול להשתמש בו כך:
    const dirPath = path.join(__dirname, 'newDirectory'); 
    fs.mkdir(dirPath, (error) => {
    // handle errors
    console.log('New directory created successfully');
    });
  2. fs.unlink: פונקציה זו מסירה או מוחקת את הקובץ בנתיב שהועבר כארגומנט. שקול את דוגמת הקוד שלהלן:
    const filePath = path.join(_dirname, 'oldFile.js'); 

    fs.unlink(filePath, (error) => {
    // handle errors
    console.log('File has been deleted successfully');
    });
  3. fs.rmdir: שיטה זו מוחקת את הספרייה בנתיב נתון. זה מאוד דומה בשימוש לשיטת ביטול הקישור:
    const dirPath = path.resolve('home', 'projects', 'web'); 

    fs.rmdir(dirPath, (error) => {
    // handle errors
    console.log('Directory successfully deleted');
    })

מטא נתונים של קובץ

  1. fs.exists: ה קיים השיטה בודקת אם הקובץ בנתיב נתון קיים. היישום הוא כדלקמן:
    let filePath = path.join(__dirname, 'index.html'); 

    fs.exists(filePath, (exists) => {
    console.log(exists) // true or false
    })
  2. fs.stat: זוהי פונקציה סינכרונית המחזירה את המאפיינים של קובץ. זה מחזיר א fs.Stats אובייקט אשר חושף כמה שיטות לגישה למאפייני הקובץ. הנה דוגמה:
    fs.stat('index.js', (error, stats) => { 
    console.log(stats); // prints low level properties of the file
    stats.isFile(); // returns true
    stats.isDirectory(); // returns false
    })