Tạo một tệp trống trong Node.js?


75

Bây giờ tôi sử dụng

fs.openSync(filepath, 'a')

Nhưng nó hơi khó. Có cách nào 'tiêu chuẩn' để tạo tệp trống trong Node.js không?

Câu trả lời:


147

Nếu bạn muốn buộc tệp trống thì bạn muốn sử dụng 'w'cờ thay thế:

var fd = fs.openSync(filepath, 'w');

Điều đó sẽ cắt ngắn tệp nếu nó tồn tại và tạo nó nếu không.

Kết hợp nó trong một fs.closeSynccuộc gọi nếu bạn không cần bộ mô tả tệp, nó sẽ trả về.

fs.closeSync(fs.openSync(filepath, 'w'));

1
fs.writeFileSync ('rỗng.txt', '');
ahuigo

fs.appendFileSync ('do_not_override.txt', '');
ahuigo 30/07/18

2
bạn có thể có một cái nhìn vào đây để lựa chọn hơn wcờ nodejs.org/api/fs.html#fs_file_system_flags
Aditya Kresna Permana

có cách nào để tạo nhiều thư mục cùng một lúc ngoài vòng lặp mkdir?? cảm ơn
oldboy

8

Đây là cách không đồng bộ, sử dụng "wx"như vậy không thành công trên các tệp hiện có.

var fs = require("fs");
fs.open(path, "wx", function (err, fd) {
    // handle error
    fs.close(fd, function (err) {
        // handle error
    });
});

tại sao bạn muốn nó thất bại?
Nick Sotiros

11
@NickSotiros để tệp không bị ghi đè, một số trường hợp sử dụng có thể muốn điều đó.
Michael Ozeryansky

8

Nếu bạn muốn nó giống như UNIX touch, tôi sẽ sử dụng những gì bạn có, fs.openSync(filepath, 'a')nếu không, 'w' sẽ ghi đè lên tệp nếu nó đã tồn tại và 'wx' sẽ không thành công nếu nó đã tồn tại. Nhưng bạn muốn cập nhật mtime của tệp, vì vậy hãy sử dụng 'a' và không thêm gì.


7

https://github.com/isaacs/node-touch sẽ thực hiện công việc và giống như công cụ UNIX mà nó mô phỏng, sẽ không ghi đè lên tệp hiện có.


4
node-touchlợi thế nào khác fs.closeSync(fs.openSync(filepath, 'a'));ngoài việc cập nhật dấu thời gian cho các tệp hiện có không?
Mikael Lepistö
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.