fs: আমি কীভাবে প্যারেন্ট ফোল্ডারটি সনাক্ত করব?


193

কোনও ফাইল খুঁজতে পিতামাতার 2 স্তরের ব্যাক আপ নিতে আমি কীভাবে এটি লিখব?

fs.readFile(__dirname + 'foo.bar');

উত্তর:


277

এটা চেষ্টা কর:

fs.readFile(__dirname + '/../../foo.bar');

আপেক্ষিক পথের শুরুতে ফরোয়ার্ড স্ল্যাশটি নোট করুন।


25
আমি চেষ্টা করেছিলাম যে কোনও ভাগ্য ছাড়াই কিন্তু আমি সবেমাত্র করেছি fs.readFile(__dirname + '/../../foo.bar');এবং এটি কাজ করে।
অভিনব

6
আমি তখন অভিমানী করছি যে __dirnameমত পারছেন ছিল '/foo/bar'বদলে '/foo/bar/'
অ্যান্ড্রু হার

3
আপনার পথে প্রথম '/': '/../../foo.bar' অত্যন্ত গুরুত্বপূর্ণ। আমার কাছে '../../foo.bar' ছিল যা আমার সমস্যার কারণ ছিল।
লেবিবোস্টিয়ান

1
কেন? শুধু সাধারণত কেন? কেউ দয়া করে ব্যাখ্যা করতে পারেন?
eyurdul

@ এয়ারদাকুল যদি আমি তা আন্তরিকভাবে বুঝতে পারি: আপনি যদি এটি বলে থাকেন তবে এটির __dirnameমতো দেখতেও এটি হতে পারে /path/to/your/dir, __dirname + ".."এটি /path/to/your/dir..বরং একটি অস্তিত্বের ডিরেক্টরি /path/to/your। স্ল্যাশ গুরুত্বপূর্ণ।
জোলিভি শীর্ষ এন্টারপ্রাইজ.অক্সিজ

162

Path.join ব্যবহার করুন http://nodejs.org/docs/v0.4.10/api/path.html#path.join

var path = require("path"),
    fs = require("fs");

fs.readFile(path.join(__dirname, '..', '..', 'foo.bar'));

path.join() আপনার জন্য শীর্ষস্থানীয় / পিছনে স্ল্যাশ পরিচালনা করবে এবং সঠিক কাজটি করবে এবং স্ল্যাশগুলি অনুসরণ করার সময় এবং সেগুলি কখনই না তা মনে করার দরকার নেই।


4
সঙ্গে এই উত্তরটি path.joinসঠিক ভাবে, গৃহীত উত্তর অনুসৃত করা উচিত নয়, এটা এমনকি আরম্ভ করে eslintউপর airbnb-base preset, নিয়ম নো পথ-CONCAT বিশেষ করে
revelt

100 ম upvote। আমার __dirnameছিল host/src/folderএবং আমার দরকার ছিল এবং এটি আমার পক্ষে host/folderকাজ করেছে, ওপি উত্তর নয়।
কারকড

8
আপনি এটিকে আরও একধাপ এগিয়ে নিয়ে যেতে পারেনpath.join(__dirname, '..', '..', 'foo.bar')
মিঃ নোবডি

আপনাকে অ্যালেক্স ধন্যবাদ, আপনি 6 ঘন্টা অনুসন্ধানের পরে আমাকে বাঁচিয়েছিলেন
শেহিল সেথিয়া

95

আমি জানি এটি কিছুটা পিক, তবে এখন পর্যন্ত সমস্ত উত্তর একেবারেই ঠিক নয়।

পাথ.জেইন () এর বিন্দুটি হ'ল কলিংকারীর কোন ডিরেক্টরি বিভাজকটি ব্যবহার করতে হবে তা জানার জন্য প্রয়োজনীয়তা দূর করা (কোড প্ল্যাটফর্ম অজ্ঞেয় তৈরি করা)।

প্রযুক্তিগতভাবে সঠিক উত্তরটি এমন হবে:

var path = require("path");

fs.readFile(path.join(__dirname, '..', '..', 'foo.bar'));

আমি এ্যালেক্স ওয়েনের উত্তরের মন্তব্য হিসাবে এটিকে যুক্ত করতাম তবে এখনও যথেষ্ট প্রতিনিধি ছিল না!

সম্পাদনা: ব্যবহারকারী 1767586 এর পর্যবেক্ষণ অনুযায়ী


4
'foo.bar "' foo.bar 'হওয়া উচিত I আমি একটি সম্পাদনা করার চেষ্টা করেছি তবে সম্পাদনাগুলি ন্যূনতম characters টি অক্ষর হওয়া দরকার (বোকা নিয়ম যদি আপনি আমাকে জিজ্ঞাসা করেন, আমাদেরকে এই জাতীয় ছোট টাইপগুলি সম্পাদনা করা থেকে বিরত করে
তোলে

1
আমি সন্দেহ করি যে এটিই সেরা উত্তর। অন্য কয়েকটি উত্তর প্রদত্ত অপারেটিং সিস্টেমে প্রদত্ত ব্যক্তির পক্ষে কাজ করতে পারে তবে সেই অন্যান্য উত্তরগুলিতে একটি নির্দিষ্ট ধরণের ফাইলের স্তরক্রম বিভাজক (অর্থাৎ স্ল্যাশ) উপস্থিতি আমাকে বিস্মিত করে তোলে যে তারা কীভাবে সর্বজনীন। উদাহরণস্বরূপ, আমি একটি প্ল্যাটফর্ম অজিনস্টিক পদ্ধতিতে একটি ইলেক্ট্রন অ্যাপ্লিকেশন লেখার চেষ্টা করছি এবং যদিও আমি এটি সম্পূর্ণরূপে প্রমাণ করি নি, আমার সন্দেহ হয় এটিই সবচেয়ে নিরাপদ উপায়। ধন্যবাদ।
অ্যান্ড্রু উইলিয়ামস

এটি প্রকৃতপক্ষে অপ্রয়োজনীয়, কারণ পথের আগেই যুক্ত হওয়া পথে পাথ.জাইন () অভ্যন্তরীণভাবে প্যাথ.নরমালাইজ () (যা সমস্ত পাথ বিভাজককে বর্তমান / অভিযুক্ত ওএস ফর্ম্যাটে রূপান্তর করে) ব্যবহার করে। যদিও এটি আঘাত করতে পারে না।
আয়নো

55

সবচেয়ে সহজ উপায়টি হ'ল path.resolve:

path.resolve(__dirname, '..', '..');

প্রকৃতপক্ষে আপনি সঠিক সমাধান যোগদান করে ফোল্ডারের সমাধান করতে প্রয়োজন হবে না ../পথে
জোয়াও মধ্যে Pimentel ফেরেইরা

@ ইয়ান কে '..' বলা হয়?
গৌরব



11

যদি অন্য কোনও মডিউল আপনাকে কল করে এবং আপনি এখনও চালিত মূল ফাইলটির অবস্থান জানতে চান আপনি @ জেসনের কোডের একটি পরিবর্তন ব্যবহার করতে পারেন:

var path = require('path'),
    __parentDir = path.dirname(process.mainModule.filename);

fs.readFile(__parentDir + '/foo.bar');

এইভাবে আপনি স্ক্রিপ্টটির অবস্থানটি আসলে চালিত হবেন।


8

অভিভাবকরা কোথায় আছেন সে সম্পর্কে যদি আপনি ইতিবাচক না হন তবে এটি আপনাকে পথ পাবে;

var path = require('path'),
    __parentDir = path.dirname(module.parent.filename);

fs.readFile(__parentDir + '/foo.bar');


2

আমি ইলেক্ট্রন অ্যাপ্লিকেশন চালাচ্ছি এবং আমি পথের মাধ্যমে প্যারেন্ট ফোল্ডারটি পেতে পারি olve

পিতামাতার 1 স্তর:path.resolve(__dirname, '..') + '/'

পিতামাতার 2 স্তর:path.resolve(__dirname, '..', '..') + '/'


আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.