โหนด 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\

มี api สำหรับสิ่งนี้หรือไม่หรือฉันจะต้องประมวลผลสตริง?

คำตอบ:


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
หากคุณเริ่มต้นด้วยเส้นทางสัมพัทธ์เหมือนในคำถามเดิมคุณจะทำlet onlyPath = path.dirname(fs.realpathSync('config.json'));
กีบ

ฉันต้องการใช้วิธีการใช้ @Kip realpathSyncซึ่งครอบคลุมเส้นทางสัมบูรณ์และสัมพัทธ์
เสมอ

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 ปีก่อน
KyleMit
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.