Làm cách nào để xóa một tập tin với node.js?
http://nodejs.org/api/fs.html#fs_fs_rename_oldpath_newpath_callback
Tôi không thấy lệnh xóa?
Làm cách nào để xóa một tập tin với node.js?
http://nodejs.org/api/fs.html#fs_fs_rename_oldpath_newpath_callback
Tôi không thấy lệnh xóa?
Câu trả lời:
rmFile
bí danh
rm
bí danh nếu họ có rmdir
phương thức
fs.unlinkSync()
Bạn có thể gọi fs.unlink(path, callback)
cho hủy liên kết không đồng bộ (2) hoặc fs.unlinkSync(path)
hủy liên kết đồng bộ (2).
Đâu path
là đường dẫn tệp mà bạn muốn xóa.
Ví dụ chúng tôi muốn xóa discovery.docx
tập tin khỏi c:/book
thư mục. Vì vậy, đường dẫn tập tin của tôi là c:/book/discovery.docx
. Vì vậy, mã để loại bỏ tập tin đó sẽ là,
var fs = require('fs');
var filePath = 'c:/book/discovery.docx';
fs.unlinkSync(filePath);
Nếu bạn muốn kiểm tra tập tin trước khi xóa xem nó có tồn tại hay không. Vì vậy, sử dụng fs.stat hoặc fs.statSync ( Đồng bộ ) thay vì fs.exists
. Bởi vì theo tài liệu mới nhất của node.js , fs.exists
hiện không dùng nữa .
Ví dụ:-
fs.stat('./server/upload/my.csv', function (err, stats) {
console.log(stats);//here we got all information of file in stats variable
if (err) {
return console.error(err);
}
fs.unlink('./server/upload/my.csv',function(err){
if(err) return console.log(err);
console.log('file deleted successfully');
});
});
fs.unlink
và nếu tệp không tồn tại, bạn sẽ gặp ENOENT
lỗi trong cuộc gọi lại. Không cần kiểm tra trước khi cố gắng bỏ liên kết.
fs.unlink
thực hiện khi tệp không tồn tại, vì vậy quan điểm của tôi là kiểm tra tệp trước khi xóa.
unlink
gọi lại. Nếu lỗi đó xảy ra, tập tin đã không tồn tại. Nhìn vào câu trả lời của Searene chẳng hạn.
Tôi không nghĩ bạn phải kiểm tra xem tập tin có tồn tại hay không, fs.unlink
sẽ kiểm tra nó cho bạn.
fs.unlink('fileToBeRemoved', function(err) {
if(err && err.code == 'ENOENT') {
// file doens't exist
console.info("File doesn't exist, won't remove it.");
} else if (err) {
// other errors, e.g. maybe we don't have enough permission
console.error("Error occurred while trying to remove file");
} else {
console.info(`removed`);
}
});
Đây là một đoạn nhỏ tôi làm cho mục đích này,
var fs = require('fs');
var gutil = require('gulp-util');
fs.exists('./www/index.html', function(exists) {
if(exists) {
//Show in green
console.log(gutil.colors.green('File exists. Deleting now ...'));
fs.unlink('./www/index.html');
} else {
//Show in red
console.log(gutil.colors.red('File not found, so not deleting.'));
}
});
fs.exists
và trước khi bạn xóa nó bằng fs.unlink
? Nó có thể xảy ra.
unlink
và nếu nó không tồn tại, xử lý ENOENT
lỗi. Nếu không, bạn có thể tạo một điều kiện cuộc đua.
Là câu trả lời được chấp nhận, sử dụng fs.unlink
để xóa các tập tin.
Nhưng theo tài liệu của Node.js
Sử dụng
fs.stat()
để kiểm tra sự tồn tại của một tập tin trước khi gọifs.open()
,fs.readFile()
hoặcfs.writeFile()
không được khuyến nghị. Thay vào đó, mã người dùng nên mở / đọc / ghi tệp trực tiếp và xử lý lỗi đã nêu nếu tệp không khả dụng.Để kiểm tra xem một tập tin tồn tại mà không cần thao tác sau đó,
fs.access()
được khuyến khích.
để kiểm tra tập tin có thể bị xóa hay không, fs.access
thay vào đó hãy sử dụng
fs.access('/etc/passwd', fs.constants.R_OK | fs.constants.W_OK, (err) => {
console.log(err ? 'no access!' : 'can read/write');
});
unlink
trực tiếp vì họ biết rằng họ có quyền xóa tệp. Nhưng fs.access
là một lựa chọn tốt nếu họ cần kiểm tra trước khi xóa. Nhưng tôi nghĩ rằng nếu họ cần kiểm tra xem một tập tin có tồn tại mà không cần thao tác sau đó hay không, thì họ nên sử dụng một cách tự nhiên fs.stat
, fs.access
có một mục đích khác trong quan điểm khiêm tốn của tôi.
Dưới đây mã của tôi hoạt động tốt.
const fs = require('fs');
fs.unlink(__dirname+ '/test.txt', function (err) {
if (err) {
console.error(err);
}
console.log('File has been Deleted');
});
2019 và Node 10+ là đây . Bên dưới phiên bản sử dụng async / await cách ngọt ngào .
Bây giờ không cần phải gói gọn fs.unlink
vào Lời hứa cũng như không sử dụng các gói bổ sung (như fs-extra
) nữa.
Chỉ cần sử dụng API hứa hẹn fs gốc .
const fs = require('fs').promises;
(async () => {
try {
await fs.unlink('~/any/file');
} catch (e) {
// file doesn't exist, no permissions, etc..
// full list of possible errors is here
// http://man7.org/linux/man-pages/man2/unlink.2.html#ERRORS
console.log(e);
}
})();
Đây là fsPromises.unlink
thông số kỹ thuật từ các tài liệu Node.
Ngoài ra, xin lưu ý rằng API fs.promises được đánh dấu là thử nghiệm trong Nút 10.xx (tuy nhiên hoạt động hoàn toàn tốt) và không còn thử nghiệm kể từ đó 11.14.0
.
bạn có thể sử dụng mô-đun del để xóa một hoặc nhiều tệp trong thư mục hiện tại. Điều tuyệt vời ở đây là bảo vệ bạn khỏi việc xóa thư mục làm việc hiện tại trở lên.
const del = require('del');
del(['<your pathere here>/*']).then( (paths: any) => {
console.log('Deleted files and folders:\n', paths.join('\n'));
});
Bạn có thể sử dụng chức năng fs.unlink (đường dẫn, gọi lại) . Dưới đây là một ví dụ về trình bao bọc hàm với mẫu "error-back":
// Dependencies.
const fs = require('fs');
// Delete a file.
const deleteFile = (filePath, callback) => {
// Unlink the file.
fs.unlink(filePath, (error) => {
if (!error) {
callback(false);
} else {
callback('Error deleting the file');
}
})
};
Loại bỏ các tập tin từ thư mục phù hợp với regrec cho tên tệp. Chỉ sử dụng fs.unlink - để xóa tệp, fs.readdir - để lấy tất cả các tệp từ một thư mục
var fs = require('fs');
const path = '/path_to_files/filename.anyextension';
const removeFile = (fileName) => {
fs.unlink(`${path}${fileName}`, function(error) {
if (error) {
throw error;
}
console.log('Deleted filename', fileName);
})
}
const reg = /^[a-zA-Z]+_[0-9]+(\s[2-4])+\./
fs.readdir(path, function(err, items) {
for (var i=0; i<items.length; i++) {
console.log(items[i], ' ', reg.test(items[i]))
if (reg.test(items[i])) {
console.log(items[i])
removeFile(items[i])
}
}
});
fs-extra
cung cấp một phương thức loại bỏ:
const fs = require('fs-extra')
fs.remove('/tmp/myfile')
.then(() => {
console.log('success!')
})
.catch(err => {
console.error(err)
})
https://github.com/jprichardson/node-fs-extra/blob/master/docs/remove.md
Sử dụng mô-đun NPM fs-thêm , cung cấp cho bạn mọi thứ trong fs, cộng với mọi thứ đều được Hứa hẹn. Là một phần thưởng, có sẵn phương thức fs.remove () .
Đây là mã nơi bạn có thể xóa tập tin / hình ảnh từ thư mục.
var fs = require('fs');
Gallery.findById({ _id: req.params.id},function(err,data){
if (err) throw err;
fs.unlink('public/gallery/'+data.image_name);
});
delete
bí danh!