नोड js एक फ़ाइल से फ़ोल्डर पथ प्राप्त करें


92

क्या किसी फ़ोल्डर में पथ प्राप्त करने का एक तरीका है जो किसी विशेष फ़ाइल को रखता है।

fs.realpathSync('config.json', []);

कुछ इस तरह देता है

G:\node-demos\7-node-module\demo\config.json

मुझे चाहिए

G:\node-demos\7-node-module\demo\ 
or
G:\node-demos\7-node-module\demo\

क्या इसके लिए कोई एपीआई है या मुझे स्ट्रिंग को संसाधित करने की आवश्यकता होगी?

जवाबों:


168

path.dirname का उपयोग करें

// onlyPath should be G:\node-demos\7-handlebars-watch\demo
var onlyPath = require('path').dirname('G:\\node-demos\\7-node-module\\demo\\config.json');

1
अपने बैकस्लैश को डबल करें, या आप बेतरतीब पात्रों से बचकर निकल जाएंगे।
Константин Ван

1
आप मूल प्रश्न में की तरह एक रिश्तेदार पथ के साथ शुरू कर रहे हैं, तो आप do- हैंlet onlyPath = path.dirname(fs.realpathSync('config.json'));
किप

मैं हमेशा उपयोग करना चाहूंगा @ काप विधि का उपयोग करना realpathSyncजो पूर्ण और सापेक्ष पथों को कवर करता है
joshweir

5

require("path").dirname(……) जब आपका रास्ता स्पष्ट रूप से अपनी निर्देशिका निर्दिष्ट नहीं करता है तो टूट जाता है

require("path").dirname("./..")
// "."

आप require("path").join(……, "../")इसके बजाय उपयोग करने पर विचार कर सकते हैं । यह अनुगामी विभाजक को भी संरक्षित करता है।

require("path").join("whatever/absolute/or/relative", "../")
// "whatever/absolute/or/" (POSIX)
// "whatever\\absolute\\or\\" (Windows)
require("path").join(".", "../")
// "../" (POSIX)
// "..\\" (Windows)
require("path").join("..", "../")
// "../../" (POSIX)
// "..\\..\\" (Windows)
require("path").win32.join("C:\\", "../")
// "C:\\"

5

बस pathमॉड्यूल स्थापित करें और इसका उपयोग करें,

var path = require('path');
path.dirname('G:\\node-demos\\7-node-module\\demo\\config.json')

// Returns: 'G:\node-demos\7-node-module\demo'

यह 5 साल पहले पोस्ट किए गए स्वीकृत उत्तर के समान लगता है
काइलमिट
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.