trong nút. js, tệp I/O được cung cấp bởi các trình bao bọc đơn giản xung quanh các chức năng POSIX tiêu chuẩn. Có thể nhập mô-đun Hệ thống tệp nút [fs] bằng cú pháp sau
Nút. js FS đọc tệp
Mọi phương thức trong mô-đun fs đều có dạng đồng bộ và không đồng bộ
Các phương thức không đồng bộ lấy tham số cuối cùng làm hàm gọi lại hàm hoàn thành. Phương thức không đồng bộ được ưu tiên hơn phương thức đồng bộ vì nó không bao giờ chặn việc thực thi chương trình trong khi phương thức đồng bộ chặn
Hãy lấy một ví dụ
Tạo một tệp văn bản có tên là "đầu vào. txt" có nội dung như sau
Tập tin. đầu vào. txt
Hãy lấy một ví dụ để tạo một tệp JavaScript có tên là "main. js" có đoạn mã sau
Tập tin. chủ yếu. js
mở nút. js nhắc lệnh và chạy lệnh chính. js
Nút. js Mở tệp
cú pháp
Sau đây là cú pháp của phương thức để mở tệp ở chế độ không đồng bộ
giải thích thông số
Sau đây là mô tả các tham số được sử dụng trong cú pháp trên
đường dẫn. Đây là một chuỗi có tên tệp bao gồm cả đường dẫn
cờ. Cờ chỉ định hành vi của tệp sẽ được mở. Tất cả các giá trị có thể đã được đề cập dưới đây
chế độ. Điều này đặt chế độ tệp [quyền và bit dính], nhưng chỉ khi tệp được tạo. Nó mặc định là 0666, có thể đọc và ghi
gọi lại. Đây là hàm gọi lại có hai đối số [err, fd]
Nút. js Cờ để Đọc/Ghi
Sau đây là danh sách các cờ cho thao tác đọc/ghi
FlagDescriptionmở tệp để đọc. một ngoại lệ xảy ra nếu tập tin không tồn tại. r+mở tệp để đọc và ghi. một ngoại lệ xảy ra nếu tập tin không tồn tại. tệp rsopen để đọc ở chế độ đồng bộ. rs+mở tệp để đọc và ghi, yêu cầu hệ điều hành mở tệp đó một cách đồng bộ. xem ghi chú cho 'rs' về việc sử dụng cái này một cách thận trọng. tập tin wopen để viết. tệp được tạo [nếu nó không tồn tại] hoặc bị cắt bớt [nếu nó tồn tại]. wxlike 'w' nhưng không thành công nếu đường dẫn tồn tại. w+mở tệp để đọc và ghi. tệp được tạo [nếu nó không tồn tại] hoặc bị cắt bớt [nếu nó tồn tại]. wx+like 'w+' nhưng không thành công nếu đường dẫn tồn tại. mở tệp để nối thêm. tệp được tạo nếu nó không tồn tại. axlike 'a' nhưng không thành công nếu đường dẫn tồn tại. a+mở tệp để đọc và nối thêm. tệp được tạo nếu nó không tồn tại. ax+mở tệp để đọc và nối thêm. tệp được tạo nếu nó không tồn tạiTạo một tệp JavaScript có tên là "chính. js" có đoạn mã sau để mở đầu vào tệp. txt để đọc và viết
Tập tin. chủ yếu. js
mở nút. js nhắc lệnh và chạy lệnh chính. js
Nút. js Phương thức thông tin tệp
cú pháp
Sau đây là cú pháp của phương thức lấy thông tin tệp
giải thích thông số
Đường dẫn. Đây là chuỗi có tên tệp bao gồm cả đường dẫn
Gọi lại. Đây là hàm gọi lại nhận hai đối số [err, stats] trong đó stats là một đối tượng của fs. loại thống kê
Nút triển khai Tệp I/O bằng cách sử dụng các trình bao bọc đơn giản xung quanh các chức năng POSIX tiêu chuẩn. Có thể nhập mô-đun Hệ thống tệp nút [fs] bằng cú pháp sau –
var fs = require["fs"]
Đồng bộ vs Không đồng bộ
Mọi phương thức trong mô-đun fs đều có dạng đồng bộ cũng như không đồng bộ. Các phương thức không đồng bộ lấy tham số cuối cùng làm hàm gọi lại hoàn thành và tham số đầu tiên của hàm gọi lại là lỗi. Tốt hơn là sử dụng phương thức không đồng bộ thay vì phương thức đồng bộ, vì phương thức trước không bao giờ chặn chương trình trong khi thực thi, trong khi phương thức thứ hai thì không
Thí dụ
Tạo một tệp văn bản có tên là đầu vào. txt với nội dung sau -
Tutorials Point is giving self learning content to teach the world in simple and easy way!!!!!
Hãy để chúng tôi tạo một tệp js có tên chính. js với đoạn mã sau -
var fs = require["fs"]; // Asynchronous read fs.readFile['input.txt', function [err, data] { if [err] { return console.error[err]; } console.log["Asynchronous read: " + data.toString[]]; }]; // Synchronous read var data = fs.readFileSync['input.txt']; console.log["Synchronous read: " + data.toString[]]; console.log["Program Ended"];
Bây giờ chạy chính. js để xem kết quả -
$ node main.js
Xác minh đầu ra
Synchronous read: Tutorials Point is giving self learning content to teach the world in simple and easy way!!!!! Program Ended Asynchronous read: Tutorials Point is giving self learning content to teach the world in simple and easy way!!!!!
Các phần tiếp theo trong chương này cung cấp một tập hợp các ví dụ hay về các phương thức File I/O chính
Mở tệp tin
cú pháp
Sau đây là cú pháp của phương thức để mở tệp ở chế độ không đồng bộ -
fs.open[path, flags[, mode], callback]
Thông số
Dưới đây là mô tả về các tham số được sử dụng -
đường dẫn - Đây là chuỗi có tên tệp bao gồm đường dẫn
cờ - Cờ cho biết hành vi của tệp sẽ được mở. Tất cả các giá trị có thể đã được đề cập dưới đây
chế độ - Nó đặt chế độ tệp [quyền và bit dính], nhưng chỉ khi tệp được tạo. Nó mặc định là 0666, có thể đọc và ghi
gọi lại - Đây là chức năng gọi lại có hai đối số [err, fd]
cờ
Cờ cho hoạt động đọc/ghi là -
Sr. Không. Cờ và Mô tảr
Mở tệp để đọc. Một ngoại lệ xảy ra nếu tệp không tồn tại
2r+
Mở tệp để đọc và ghi. Một ngoại lệ xảy ra nếu tệp không tồn tại
3rs
Mở tệp để đọc ở chế độ đồng bộ
4rs +
Mở tệp để đọc và ghi, yêu cầu hệ điều hành mở đồng bộ. Xem ghi chú cho 'rs' về cách sử dụng này một cách thận trọng
5w
Mở tệp để viết. Tệp được tạo [nếu không tồn tại] hoặc bị cắt bớt [nếu tồn tại]
6wx
Giống như 'w' nhưng không thành công nếu đường dẫn tồn tại
w+
Mở tệp để đọc và ghi. Tệp được tạo [nếu không tồn tại] hoặc bị cắt bớt [nếu tồn tại]
8wx+
Giống như 'w+' nhưng không thành công nếu đường dẫn tồn tại
9a
Mở tệp để nối thêm. Tệp được tạo nếu nó không tồn tại
10cây rìu
Giống như 'a' nhưng không thành công nếu đường dẫn tồn tại
11một +
Mở tệp để đọc và nối thêm. Tệp được tạo nếu nó không tồn tại
12rìu+
Giống như 'a+' nhưng không thành công nếu đường dẫn tồn tại
Thí dụ
Hãy để chúng tôi tạo một tệp js có tên chính. js có đoạn mã sau để mở tệp đầu vào. txt để đọc và viết
var fs = require["fs"]; // Asynchronous - Opening File console.log["Going to open file!"]; fs.open['input.txt', 'r+', function[err, fd] { if [err] { return console.error[err]; } console.log["File opened successfully!"]; }];
Bây giờ chạy chính. js để xem kết quả -
$ node main.js
Xác minh đầu ra
________số 8_______Nhận thông tin tệp
cú pháp
Sau đây là cú pháp của phương thức để lấy thông tin về một tệp -
fs.stat[path, callback]
Thông số
Dưới đây là mô tả về các tham số được sử dụng -
đường dẫn - Đây là chuỗi có tên tệp bao gồm đường dẫn
gọi lại - Đây là chức năng gọi lại nhận hai đối số [err, stats] trong đó stats là một đối tượng của fs. Loại thống kê được in bên dưới trong ví dụ
Ngoài các thuộc tính quan trọng được in bên dưới trong ví dụ, có một số phương thức hữu ích có sẵn trong fs. Lớp thống kê có thể được sử dụng để kiểm tra loại tệp. Các phương pháp này được đưa ra trong bảng sau
Sr. Không. Phương pháp và Mô tảsố liệu thống kê. isFile[]
Trả về true nếu loại tệp của một tệp đơn giản
2số liệu thống kê. isDirectory[]
Trả về true nếu loại tệp của một thư mục
3số liệu thống kê. isBlockDevice[]
Trả về true nếu loại tệp của thiết bị khối
4số liệu thống kê. is CharacterDevice[]
Trả về true nếu loại tệp của thiết bị ký tự
5số liệu thống kê. isSymbolicLink[]
Trả về true nếu loại tệp của một liên kết tượng trưng
6số liệu thống kê. isFIFO[]
Trả về true nếu loại tệp FIFO
7số liệu thống kê. isSocket[]
Trả về true nếu loại tệp của asocket
Thí dụ
Hãy để chúng tôi tạo một tệp js có tên chính. js với đoạn mã sau -
Tutorials Point is giving self learning content to teach the world in simple and easy way!!!!!0
Bây giờ chạy chính. js để xem kết quả -
$ node main.js
Xác minh đầu ra
Tutorials Point is giving self learning content to teach the world in simple and easy way!!!!!2
Viết một tập tin
cú pháp
Sau đây là cú pháp của một trong các phương thức để ghi vào tệp -
Tutorials Point is giving self learning content to teach the world in simple and easy way!!!!!3
Phương pháp này sẽ ghi đè lên tệp nếu tệp đã tồn tại. Nếu bạn muốn ghi vào một tệp có sẵn thì bạn nên sử dụng phương pháp khác có sẵn
Thông số
Dưới đây là mô tả về các tham số được sử dụng -
đường dẫn - Đây là chuỗi có tên tệp bao gồm đường dẫn
dữ liệu - Đây là Chuỗi hoặc Bộ đệm được ghi vào tệp
tùy chọn - Tham số thứ ba là một đối tượng sẽ chứa {encoding, mode, flag}. Theo mặc định. mã hóa là utf8, chế độ là giá trị bát phân 0666. và cờ là 'w'
gọi lại - Đây là chức năng gọi lại nhận một tham số duy nhất err trả về lỗi trong trường hợp có bất kỳ lỗi ghi nào
Thí dụ
Hãy để chúng tôi tạo một tệp js có tên chính. js có đoạn mã sau -
Tutorials Point is giving self learning content to teach the world in simple and easy way!!!!!4
Bây giờ chạy chính. js để xem kết quả -
$ node main.js
Xác minh đầu ra
Tutorials Point is giving self learning content to teach the world in simple and easy way!!!!!6
Đọc một tập tin
cú pháp
Sau đây là cú pháp của một trong các phương thức để đọc từ một tệp -
Tutorials Point is giving self learning content to teach the world in simple and easy way!!!!!7
Phương pháp này sẽ sử dụng bộ mô tả tệp để đọc tệp. Nếu bạn muốn đọc tệp trực tiếp bằng tên tệp, thì bạn nên sử dụng phương pháp khác có sẵn
Thông số
Dưới đây là mô tả về các tham số được sử dụng -
fd − Đây là bộ mô tả tệp được trả về bởi fs. mở ra[]
bộ đệm - Đây là bộ đệm mà dữ liệu sẽ được ghi vào
offset - Đây là phần bù trong bộ đệm để bắt đầu ghi tại
chiều dài - Đây là một số nguyên chỉ định số byte để đọc
vị trí - Đây là một số nguyên chỉ định vị trí bắt đầu đọc trong tệp. Nếu vị trí là null, dữ liệu sẽ được đọc từ vị trí tệp hiện tại
gọi lại − Đây là hàm gọi lại nhận ba đối số, [err, bytesRead, buffer]
Thí dụ
Hãy để chúng tôi tạo một tệp js có tên chính. js với đoạn mã sau -
Tutorials Point is giving self learning content to teach the world in simple and easy way!!!!!8
Bây giờ chạy chính. js để xem kết quả -
$ node main.js
Xác minh đầu ra
var fs = require["fs"]; // Asynchronous read fs.readFile['input.txt', function [err, data] { if [err] { return console.error[err]; } console.log["Asynchronous read: " + data.toString[]]; }]; // Synchronous read var data = fs.readFileSync['input.txt']; console.log["Synchronous read: " + data.toString[]]; console.log["Program Ended"];0
Đóng một tập tin
cú pháp
Sau đây là cú pháp để đóng một tệp đã mở -
var fs = require["fs"]; // Asynchronous read fs.readFile['input.txt', function [err, data] { if [err] { return console.error[err]; } console.log["Asynchronous read: " + data.toString[]]; }]; // Synchronous read var data = fs.readFileSync['input.txt']; console.log["Synchronous read: " + data.toString[]]; console.log["Program Ended"];1
Thông số
Dưới đây là mô tả về các tham số được sử dụng -
fd − Đây là bộ mô tả tệp được trả về bởi tệp fs. phương thức mở []
gọi lại - Đây là chức năng gọi lại Không có đối số nào khác ngoài một ngoại lệ có thể được đưa ra cho cuộc gọi lại hoàn thành
Thí dụ
Hãy để chúng tôi tạo một tệp js có tên chính. js có đoạn mã sau -
var fs = require["fs"]; // Asynchronous read fs.readFile['input.txt', function [err, data] { if [err] { return console.error[err]; } console.log["Asynchronous read: " + data.toString[]]; }]; // Synchronous read var data = fs.readFileSync['input.txt']; console.log["Synchronous read: " + data.toString[]]; console.log["Program Ended"];2
Bây giờ chạy chính. js để xem kết quả -
$ node main.js
Xác minh đầu ra
var fs = require["fs"]; // Asynchronous read fs.readFile['input.txt', function [err, data] { if [err] { return console.error[err]; } console.log["Asynchronous read: " + data.toString[]]; }]; // Synchronous read var data = fs.readFileSync['input.txt']; console.log["Synchronous read: " + data.toString[]]; console.log["Program Ended"];4
Cắt bớt một tập tin
cú pháp
Sau đây là cú pháp của phương thức cắt bớt một tệp đã mở -
var fs = require["fs"]; // Asynchronous read fs.readFile['input.txt', function [err, data] { if [err] { return console.error[err]; } console.log["Asynchronous read: " + data.toString[]]; }]; // Synchronous read var data = fs.readFileSync['input.txt']; console.log["Synchronous read: " + data.toString[]]; console.log["Program Ended"];5
Thông số
Dưới đây là mô tả về các tham số được sử dụng -
fd − Đây là bộ mô tả tệp được trả về bởi fs. mở ra[]
len - Đây là độ dài của tệp mà sau đó tệp sẽ bị cắt bớt
gọi lại - Đây là chức năng gọi lại Không có đối số nào khác ngoài một ngoại lệ có thể được đưa ra cho cuộc gọi lại hoàn thành
Thí dụ
Hãy để chúng tôi tạo một tệp js có tên chính. js có đoạn mã sau -
var fs = require["fs"]; // Asynchronous read fs.readFile['input.txt', function [err, data] { if [err] { return console.error[err]; } console.log["Asynchronous read: " + data.toString[]]; }]; // Synchronous read var data = fs.readFileSync['input.txt']; console.log["Synchronous read: " + data.toString[]]; console.log["Program Ended"];6
Bây giờ chạy chính. js để xem kết quả -
$ node main.js
Xác minh đầu ra
var fs = require["fs"]; // Asynchronous read fs.readFile['input.txt', function [err, data] { if [err] { return console.error[err]; } console.log["Asynchronous read: " + data.toString[]]; }]; // Synchronous read var data = fs.readFileSync['input.txt']; console.log["Synchronous read: " + data.toString[]]; console.log["Program Ended"];8
Xóa một tập tin
cú pháp
Sau đây là cú pháp của phương thức xóa một tệp -
var fs = require["fs"]; // Asynchronous read fs.readFile['input.txt', function [err, data] { if [err] { return console.error[err]; } console.log["Asynchronous read: " + data.toString[]]; }]; // Synchronous read var data = fs.readFileSync['input.txt']; console.log["Synchronous read: " + data.toString[]]; console.log["Program Ended"];9
Thông số
Dưới đây là mô tả về các tham số được sử dụng -
đường dẫn - Đây là tên tệp bao gồm đường dẫn
gọi lại - Đây là chức năng gọi lại Không có đối số nào khác ngoài một ngoại lệ có thể được đưa ra cho cuộc gọi lại hoàn thành
Thí dụ
Hãy để chúng tôi tạo một tệp js có tên chính. js có đoạn mã sau -
$ node main.js0
Bây giờ chạy chính. js để xem kết quả -
$ node main.js
Xác minh đầu ra
$ node main.js2
Tạo một thư mục
cú pháp
Sau đây là cú pháp của phương thức để tạo một thư mục -
$ node main.js3
Thông số
Dưới đây là mô tả về các tham số được sử dụng -
đường dẫn - Đây là tên thư mục bao gồm đường dẫn
chế độ - Đây là quyền thư mục được đặt. Mặc định là 0777
gọi lại - Đây là chức năng gọi lại Không có đối số nào khác ngoài một ngoại lệ có thể được đưa ra cho cuộc gọi lại hoàn thành
Thí dụ
Hãy để chúng tôi tạo một tệp js có tên chính. js có đoạn mã sau -
$ node main.js4
Bây giờ chạy chính. js để xem kết quả -
$ node main.js
Xác minh đầu ra
$ node main.js6
Đọc một thư mục
cú pháp
Sau đây là cú pháp của phương thức để đọc một thư mục -
$ node main.js7
Thông số
Dưới đây là mô tả về các tham số được sử dụng -
đường dẫn - Đây là tên thư mục bao gồm đường dẫn
gọi lại - Đây là hàm gọi lại nhận hai đối số [err, tệp] trong đó tệp là một mảng tên của các tệp trong thư mục không bao gồm '. ' và '. '
Thí dụ
Hãy để chúng tôi tạo một tệp js có tên chính. js có đoạn mã sau -
$ node main.js8
Bây giờ chạy chính. js để xem kết quả -
$ node main.js
Xác minh đầu ra
Synchronous read: Tutorials Point is giving self learning content to teach the world in simple and easy way!!!!! Program Ended Asynchronous read: Tutorials Point is giving self learning content to teach the world in simple and easy way!!!!!0
Xóa một thư mục
cú pháp
Sau đây là cú pháp của phương thức để xóa một thư mục -
Synchronous read: Tutorials Point is giving self learning content to teach the world in simple and easy way!!!!! Program Ended Asynchronous read: Tutorials Point is giving self learning content to teach the world in simple and easy way!!!!!1
Thông số
Dưới đây là mô tả về các tham số được sử dụng -
đường dẫn - Đây là tên thư mục bao gồm đường dẫn
gọi lại - Đây là chức năng gọi lại Không có đối số nào khác ngoài một ngoại lệ có thể được đưa ra cho cuộc gọi lại hoàn thành
Thí dụ
Hãy để chúng tôi tạo một tệp js có tên chính. js có đoạn mã sau -
Synchronous read: Tutorials Point is giving self learning content to teach the world in simple and easy way!!!!! Program Ended Asynchronous read: Tutorials Point is giving self learning content to teach the world in simple and easy way!!!!!2
Bây giờ chạy chính. js để xem kết quả -
$ node main.js
Xác minh đầu ra
Synchronous read: Tutorials Point is giving self learning content to teach the world in simple and easy way!!!!! Program Ended Asynchronous read: Tutorials Point is giving self learning content to teach the world in simple and easy way!!!!!4
phương pháp tham khảo
Sr. Phương pháp và Mô tả 1
fs. đổi tên [oldPath, newPath, gọi lại]
Đổi tên không đồng bộ[]. Không có đối số nào khác ngoài một ngoại lệ có thể được đưa ra cho cuộc gọi lại hoàn thành
2fs. ftruncate[fd, len, gọi lại]
ftruncate không đồng bộ[]. Không có đối số nào khác ngoài một ngoại lệ có thể được đưa ra cho cuộc gọi lại hoàn thành
3fs. ftruncateSync[fd, len]
ftruncate đồng bộ[]
4fs. cắt ngắn [đường dẫn, len, gọi lại]
Cắt ngắn không đồng bộ[]. Không có đối số nào khác ngoài một ngoại lệ có thể được đưa ra cho cuộc gọi lại hoàn thành
5fs. truncateSync[đường dẫn, len]
Cắt ngắn đồng bộ[]
6fs. chown[đường dẫn, uid, gid, gọi lại]
chown không đồng bộ[]. Không có đối số nào khác ngoài một ngoại lệ có thể được đưa ra cho cuộc gọi lại hoàn thành
7fs. chownSync[đường dẫn, uid, gid]
Chown đồng bộ[]
8fs. fchown[fd, uid, gid, gọi lại]
fchown[] không đồng bộ. Không có đối số nào khác ngoài một ngoại lệ có thể được đưa ra cho cuộc gọi lại hoàn thành
9fs. fchown Sync[lửa, uid, gid]
Đồng bộ fchown[]
10fs. lcown[đường dẫn, uid, gid, gọi lại]
lcown không đồng bộ[]. Không có đối số nào khác ngoài một ngoại lệ có thể được đưa ra cho cuộc gọi lại hoàn thành
11fs. lcownSync[đường dẫn, uid, gid]
Đồng bộ lcown[]
12fs. chmod[đường dẫn, chế độ, gọi lại]
chmod không đồng bộ[]. Không có đối số nào khác ngoài một ngoại lệ có thể được đưa ra cho cuộc gọi lại hoàn thành
13fs. chmodSync[đường dẫn, chế độ]
Chmod đồng bộ[]
14fs. fchmod[fd, chế độ, gọi lại]
fchmod không đồng bộ[]. Không có đối số nào khác ngoài một ngoại lệ có thể được đưa ra cho cuộc gọi lại hoàn thành
15fs. fchmodSync[fd, chế độ]
fchmod đồng bộ[]
16fs. lchmod[đường dẫn, chế độ, gọi lại]
lchmod không đồng bộ[]. Không có đối số nào khác ngoài một ngoại lệ có thể được đưa ra cho cuộc gọi lại hoàn thành. Chỉ khả dụng trên Mac OS X
17fs. lchmodSync[đường dẫn, chế độ]
Lchmod đồng bộ[]
18fs. stat [đường dẫn, gọi lại]
Thống kê không đồng bộ[]. Cuộc gọi lại nhận được hai đối số [err, stats] trong đó stats là fs. đối tượng thống kê
19fs. lstat[đường dẫn, gọi lại]
lstat không đồng bộ[]. Cuộc gọi lại nhận được hai đối số [err, stats] trong đó stats là fs. đối tượng thống kê. lstat[] giống với stat[], ngoại trừ nếu đường dẫn là một liên kết tượng trưng, thì chính liên kết đó là stat-ed, không phải tệp mà nó đề cập đến
20fs. fstat[fd, gọi lại]
fstat không đồng bộ[]. Cuộc gọi lại nhận được hai đối số [err, stats] trong đó stats là fs. đối tượng thống kê. fstat[] giống với stat[], ngoại trừ tệp được stat-ed được chỉ định bởi bộ mô tả tệp fd
21fs. statSync[đường dẫn]
Thống kê đồng bộ[]. Trả về một thể hiện của fs. số liệu thống kê
22fs. lstatSync[đường dẫn]
Đồng bộ lstat[]. Trả về một thể hiện của fs. số liệu thống kê
23fs. fstatSync[fd]
Đồng bộ fstat[]. Trả về một thể hiện của fs. số liệu thống kê
24fs. liên kết [srcpath, dstpath, gọi lại]
Liên kết không đồng bộ[]. Không có đối số nào khác ngoài một ngoại lệ có thể được đưa ra cho cuộc gọi lại hoàn thành
25fs. liên kết đồng bộ [srcpath, dstpath]
Liên kết đồng bộ[]
26fs. liên kết tượng trưng [srcpath, dstpath [, gõ], gọi lại]
Liên kết tượng trưng không đồng bộ[]. Không có đối số nào khác ngoài một ngoại lệ có thể được đưa ra cho cuộc gọi lại hoàn thành. Đối số loại có thể được đặt thành 'dir', 'file' hoặc 'junction' [mặc định là 'file'] và chỉ khả dụng trên Windows [bỏ qua trên các nền tảng khác]. Lưu ý rằng các điểm giao nhau của Windows yêu cầu đường dẫn đích phải tuyệt đối. Khi sử dụng 'giao lộ', đối số đích sẽ tự động được chuẩn hóa thành đường dẫn tuyệt đối