אני מנסה לכתוב תוכנית קטנה לחיפוש קובץ באמצעות המודול המובנה fs
. התוכנית מקבלת את השם של הקובץ כארגומנט, ומחזירה את הנתיב הראשון שבו היא מוצאת קובץ עם אותו שם.
את החיפוש עצמו, חשבתי לעשות עם פונקציה רקורסיבית כזאת (אם למישהו יש רעיון יותר טוב אשמח לשמוע):
function readdir(directory) {
fs.readdir(directory, function (err, res) {
if (err) console.log(err);
console.log(res);
for (let f of res) {
if (f == arg) {
console.log('Found! in', directory);
process.exit(0);
} else {
fs.stat(path.join(directory, f), function (err, stat) {
if (err) console.log(err);
if (stat.isDirectory()) {
readdir(path.join(directory, f));
}
})
}
}
})
}
readdir('C:/');
כמובן שבתחילת התוכנית אני מייבא את המודולים הנצרכים ומקבל את הארגומנט באמצעות process.argv
:
const fs = require('fs');
const path = require('path');
const arg = process.argv[2];
הבעיה היא שהעסק משום מה לא כל כך עובד... כלומר, זה נראה שהוא נתקע די בהתחלה של הבדיקה של התיקיות. ממה שהצלחתי להבין, זה בעיה בהרשאות, שהתוכנית לא מצליחה לקבל stat
של קבצים מסויימים בשביל להבין אם הם תיקייה או קובץ, והיא קורסת. השאלה שלי היא: האם באמת זאת הבעיה? ואם כן, איך ניתן להתגבר עליה (אולי לבדוק לפני ה stat
גם את ההרשאות של הקובץ..) בקיצור, אשמח לעזרה.