Nodejs nhận được đường dẫn đầy đủ của tệp
Giới thiệu về Cách lấy danh sách tệp theo đường dẫn bên trong các thư mục con bằng javascript trên nodejs, với mã mẫu có thể sao chép và dán Show
Sau đây là một mã ví dụ. Nó truy xuất các tệp theo đường dẫn đã chỉ định dưới dạng một mảng dưới dạng danh sách các tệp bao gồm các thư mục con Ngoài ra, có thể tùy chọn chỉ định độ sâu của tìm kiếm (độ sâu để tìm kiếm các cấu trúc như thư mục trong thư mục). có thể được chỉ định như là một tùy chọn Đường dẫn trong mã mẫu được mô tả trong phiên bản Windows. Tuy nhiên, nó hoạt động tốt trên Linux và MacOS getfilelist đệ quy. js Trong chương trình trên, tìm kiếm đường dẫn "c. /testdir" Đối số thứ hai được đặt thành "1" để giới hạn tìm kiếm tệp ở cấp độ thứ hai. Nếu bạn muốn tìm kiếm các tệp mà không có bất kỳ hạn chế nào, bạn có thể để đối số thứ hai không xác định Cấu trúc thư mục được hiển thị bên dưới và các mục tiêu được truy xuất được đánh dấu
Kết quả chạy chương trình như hình bên dưới
Được rồi, danh sách các tập tin đã được lấy Bạn cũng có thể muốn lấy danh sách các tệp và thư mục Sau đó, bạn có thể viết mã như thế này getfilelist_recursively2. js Cấu trúc thư mục được hiển thị bên dưới và các mục tiêu được truy xuất được đánh dấu
Chỉ C. \testdir\lv2-prog\gói-cơ sở dữ liệu\index. js bị loại trừ vì độ sâu và kết quả chạy chương trình như hình bên dưới
Một ngoại lệ sẽ được đưa ra khi cố gắng khám phá một thư mục không có đủ quyền
Thông báo lỗi là "Lỗi. EPERM. hoạt động không được phép, lstat XXXX". cho biết rằng quyền truy cập vào đường dẫn "XXXX" không nhận được trạng thái do thiếu quyền Chúng tôi phân tích cú pháp một đường dẫn Windows – đầu tiên chính xác thông qua API 06, sau đó thông qua API 05. Chúng ta có thể thấy rằng trong trường hợp sau, đường dẫn không được chia thành các phần của nó một cách chính xác – ví dụ: tên cơ sở của tệp phải là 11 (thêm về ý nghĩa của các thuộc tính khác sau)Các khái niệm đường dẫn cơ bản và hỗ trợ API của chúngĐoạn đường dẫn, dấu tách đường dẫn, dấu phân cách đường dẫnThuật ngữ
Chúng ta có thể thấy dấu phân cách đường dẫn và dấu phân cách đường dẫn nếu chúng ta kiểm tra biến trình bao PATH – chứa các đường dẫn mà hệ điều hành tìm kiếm các tệp thực thi khi một lệnh được nhập vào trình bao Đây là một ví dụ về macOS PATH (biến shell 12) 1Dấu phân tách có độ dài bằng 0 vì 13 khớp nếu một vị trí nhất định được đặt trước dấu hai chấm nhưng nó không ghi lại bất kỳ thứ gì. Do đó, dấu phân cách đường dẫn 14 được bao gồm trong đường dẫn trước đóĐây là một ví dụ về Windows PATH (biến shell 15) 5Thư mục làm việc hiện tạiNhiều shell có khái niệm về thư mục làm việc hiện tại (CWD) – “thư mục tôi hiện đang ở”
01 là một Nút toàn cầu. biến js. Nó cung cấp cho chúng tôi các phương pháp để nhận và cài đặt CWD
Nút. js sử dụng CWD để điền vào các phần còn thiếu bất cứ khi nào đường dẫn không đủ điều kiện (hoàn thành). Điều đó cho phép chúng tôi sử dụng các đường dẫn đủ điều kiện một phần với các chức năng khác nhau – e. g. 22Thư mục làm việc hiện tại trên UnixĐoạn mã sau minh họa 23 và 18 trên Unix 3Thư mục làm việc hiện tại trên WindowsCho đến nay, chúng tôi đã sử dụng thư mục làm việc hiện tại trên Unix. Windows hoạt động khác đi
Chúng tôi có thể sử dụng 25 để đặt cả hai cùng một lúc 5Khi chúng tôi truy cập lại một ổ đĩa, Node. js ghi nhớ thư mục hiện tại trước đó của ổ đĩa đó 0hoàn toàn so với. đường dẫn đủ điều kiện một phần, đường dẫn giải quyết
Đường dẫn đầy đủ và một phần đủ điều kiện trên UnixUnix chỉ biết hai loại đường dẫn
Hãy sử dụng 26 (được giải thích chi tiết hơn) để giải quyết các đường dẫn tương đối so với các đường dẫn tuyệt đối. Kết quả là đường dẫn tuyệt đối 3Đường dẫn đủ điều kiện và một phần trên WindowsWindows phân biệt bốn loại đường dẫn (để biết thêm thông tin, xem phần )
Đường dẫn tuyệt đối với ký tự ổ đĩa là đủ điều kiện. Tất cả các đường dẫn khác đều đủ điều kiện một phần Giải quyết một đường dẫn tuyệt đối không có ký tự ổ đĩa đối với đường dẫn đủ điều kiện 27, chọn ký tự ổ đĩa của 27 4Giải quyết một đường dẫn tương đối không có ký tự ổ đĩa đối với một đường dẫn đủ điều kiện, có thể được xem là cập nhật cái sau 5Giải quyết một đường dẫn tương đối 29 bằng ký tự ổ đĩa so với đường dẫn đủ điều kiện 27 phụ thuộc vào ký tự ổ đĩa của 29
Điều đó trông như sau Nhận đường dẫn của các thư mục quan trọng thông qua mô-đun import * as assert from 'node:assert/strict'; 02Module 02 cung cấp cho chúng ta đường dẫn của 2 thư mục quan trọng
Có hai chức năng để nối các đường dẫn
8Nối 44 và trả về một đường dẫn đủ điều kiện. Nó sử dụng thuật toán sau
Không có đối số, 26 trả về đường dẫn của thư mục làm việc hiện tại 9Một hoặc nhiều đường dẫn tương đối được sử dụng để giải quyết, bắt đầu với thư mục làm việc hiện tại 60Mọi đường dẫn đủ điều kiện sẽ thay thế kết quả trước đó 61Điều đó cho phép chúng tôi giải quyết các đường dẫn đủ điều kiện một phần so với các đường dẫn đủ điều kiện _______562____563Bắt đầu với 48 và diễn giải các đường dẫn còn lại dưới dạng hướng dẫn tăng dần hoặc giảm dần. Ngược lại với 26, chức năng này bảo tồn các đường dẫn đủ điều kiện một phần. Nếu 48 đủ điều kiện một phần, kết quả đủ điều kiện một phần. Nếu nó đủ điều kiện, kết quả là đủ điều kiệnCác ví dụ của giảm dần 64Dấu chấm đôi tăng dần 65Dấu chấm đơn không làm gì cả 66Nếu các đối số sau đối số đầu tiên là các đường dẫn đủ điều kiện, thì chúng được hiểu là các đường dẫn tương đối 67Sử dụng nhiều hơn hai đối số 68Đảm bảo đường dẫn được chuẩn hóa, đủ điều kiện hoặc tương đốiimport * as assert from 'node:assert/strict'; 51. đảm bảo đường dẫn được chuẩn hóa 69Trên Unix, 51
Ví dụ Trên Windows, 51
Ví dụ Lưu ý rằng 43 với một đối số cũng bình thường hóa và hoạt động giống như 51 00import * as assert from 'node:assert/strict'; 26 (một đối số). đảm bảo đường dẫn được chuẩn hóa và đủ điều kiệnChúng tôi đã gặp phải. Được gọi với một đối số duy nhất, nó vừa chuẩn hóa đường dẫn vừa đảm bảo rằng chúng đủ điều kiện Sử dụng 26 trên Unix 01Sử dụng 26 trên Windows 02import * as assert from 'node:assert/strict'; 66. tạo đường dẫn tương đối 03Trả về một đường dẫn tương đối đưa chúng ta từ 67 đến 68 04Trên Windows, chúng tôi nhận được một đường dẫn đủ điều kiện nếu 67 và 68 nằm trên các ổ đĩa khác nhau 05Chức năng này cũng hoạt động với các đường dẫn tương đối 06import * as assert from 'node:assert/strict'; 08. tạo một đối tượng với các phần đường dẫn 07Trích xuất các phần khác nhau của 07 và trả về chúng trong một đối tượng có các thuộc tính sau
Lát nữa, chúng ta sẽ xem cái nào là nghịch đảo của 08. Nó chuyển đổi một đối tượng với các phần đường dẫn thành một đường dẫnVí dụ. import * as assert from 'node:assert/strict';
|