Đường dẫn tệp nút

Cách tương tác với đường dẫn tệp và thao tác với chúng trong Node

Mọi tệp trong hệ thống đều có một đường dẫn.

Trên Linux và macOS, một đường dẫn có thể giống như sau:

/users/flavio/file.txt

trong khi máy tính Windows thì khác và có cấu trúc như:

C:\users\flavio\file.txt

Bạn cần chú ý khi sử dụng đường dẫn trong các ứng dụng của mình, vì sự khác biệt này phải được tính đến.

Bạn đưa mô-đun này vào tệp của mình bằng cách sử dụng

const path = require('path')

và bạn có thể bắt đầu sử dụng các phương pháp của nó.

Lấy thông tin ra khỏi một con đường

Với một đường dẫn, bạn có thể trích xuất thông tin từ nó bằng các phương pháp sau:

  • dirname: lấy thư mục mẹ của một tệp
  • basename: lấy phần tên tệp
  • extname: lấy phần mở rộng tệp

Thí dụ:

const notes = '/users/flavio/notes.txt'

path.dirname(notes) // /users/flavio path.basename(notes) // notes.txt path.extname(notes) // .txt

Bạn có thể lấy tên tệp mà không có phần mở rộng bằng cách chỉ định đối số thứ hai chobasename:

path.basename(notes, path.extname(notes)) //notes

Làm việc với các đường dẫn

Bạn có thể nối hai hoặc nhiều phần của một đường dẫn bằng cách sử dụngpath.join():

const name = 'flavio'
path.join('/', 'users', name, 'notes.txt') //'/users/flavio/notes.txt'

Bạn có thể tính toán đường dẫn tuyệt đối của một đường dẫn tương đối bằng cách sử dụngpath.resolve():

path.resolve('flavio.txt') //'/Users/flavio/flavio.txt' if run from my home folder

Trong trường hợp này, Node sẽ nối thêm/flavio.txtvào thư mục làm việc hiện tại. Nếu bạn chỉ định một thư mục tham số thứ hai,resolvesẽ sử dụng cái đầu tiên làm cơ sở cho cái thứ hai:

path.resolve('tmp', 'flavio.txt')//'/Users/flavio/tmp/flavio.txt' if run from my home folder

Nếu tham số đầu tiên bắt đầu bằng dấu gạch chéo, điều đó có nghĩa là đó là một đường dẫn tuyệt đối:

path.resolve('/etc', 'flavio.txt')//'/etc/flavio.txt'

path.normalize()là một hàm hữu ích khác, sẽ thử và tính toán đường dẫn thực, khi nó chứa các từ chỉ định tương đối như.hoặc là.., hoặc dấu gạch chéo kép:

path.normalize('/users/flavio/..//test.txt') ///users/test.txt

Cả giải quyết và bình thường hóa sẽ không kiểm tra xem đường dẫn có tồn tại hay không. Họ chỉ tính toán một con đường dựa trên thông tin họ có được.

Tải xuống miễn phí của tôiSổ tay Node.js


Các hướng dẫn nút khác: