2012-03-11 34 views
5

Tôi đang thực hiện một thao tác cơ bản nơi tôi bắt đầu từ một thư mục nhất định và tôi duyệt qua hệ thống tệp cho đến khi tôi nhấn gốc. Trên Linux/Mac, gốc rõ ràng là / và trên Windows, nó có thể là C:\ hoặc một ký tự ổ đĩa khác. Câu hỏi của tôi là có hay không có một cách để Node.js xác định thư mục gốc của hệ thống tập tin là gì.Xác định Gốc Hệ thống Tập tin bằng Node.js

Hiện tại, tôi đang sử dụng để chỉ cần kiểm tra thư mục cuối cùng với số path.normalize(dir + "/../") để xem liệu nó có ngừng thay đổi hay không. Có một tài sản/phương pháp process không? Có lẽ một mô-đun?

+1

Nếu bạn đang chạy trên Windows, bạn muốn thư nào? Ổ đĩa hệ thống? Drive chứa tập lệnh đang chạy? Drive chứa tệp khác? Một ký tự ổ đĩa cứng? – icktoofay

+0

Tôi nghĩ rằng "/" hoạt động trên cả hai nền tảng. Bạn sẽ sử dụng mục đích gì? – Domenic

+0

Trên Windows: Bắt đầu> Chạy> cmd.exe. 'C: \ Users \ Domenic> cd /'. Đưa tôi trực tiếp đến 'C: \>'. – Domenic

Trả lời

2

Điều này có hiệu quả không?

var path = require("path"); 
var os = require("os"); 
var root = (os.platform == "win32") ? process.cwd().split(path.sep)[0] : "/" 
+1

Điều đáng nói đến là trong Node 0.12.4 (không biết về các phiên bản khác) bạn cần làm 'os.platform' là một hàm, vì vậy bạn cần phải thực hiện 'os.platform()' – Tyblitz

+0

trong v6.9.4 nó là os.platform() –

1

Không có gì đặc biệt mà Node.js cần phải làm là, câu trả lời là một regex đơn giản:

/^([^\\/]*[\\/]).*/.test(process.cwd()) 
var root = RegExp.$1; 

Điều đó sẽ giúp gốc từ CWD cho cả Windows và Linux.

+2

[RegExp. $ X không còn được dùng nữa] (https://developer.mozilla.org/en/JavaScript/Reference/Deprecated_Features#RegExp_Properties) – Saxoier

+0

/^([^\\/]*[\\/]).*/ .exec (process.cwd()) [1] là cách dễ dàng hơn để đọc –

Các vấn đề liên quan