ฉันจะลบไฟล์ที่มี node.js ได้อย่างไร
http://nodejs.org/api/fs.html#fs_fs_rename_oldpath_newpath_callback
ฉันไม่เห็นคำสั่งลบหรือไม่
ฉันจะลบไฟล์ที่มี node.js ได้อย่างไร
http://nodejs.org/api/fs.html#fs_fs_rename_oldpath_newpath_callback
ฉันไม่เห็นคำสั่งลบหรือไม่
คำตอบ:
fs.unlink
ฉันคิดว่าคุณต้องการที่จะใช้
rmFile
alias
rm
นามแฝงหากพวกเขามีrmdir
วิธีการ
fs.unlinkSync()
คุณสามารถโทรfs.unlink(path, callback)
หา Asynchronous unlink (2) หรือfs.unlinkSync(path)
Unlink Synchronous (2) ไฟล์พา ธ
อยู่ที่ไหนpath
ที่คุณต้องการลบ
ตัวอย่างเช่นเราต้องการลบdiscovery.docx
ไฟล์ออกจากc:/book
ไดเรกทอรี c:/book/discovery.docx
ดังนั้นไฟล์เส้นทางของฉันคือ ดังนั้นรหัสสำหรับการลบไฟล์นั้นจะเป็น
var fs = require('fs');
var filePath = 'c:/book/discovery.docx';
fs.unlinkSync(filePath);
ถ้าคุณต้องการตรวจสอบไฟล์ก่อนที่จะลบมันมีอยู่หรือไม่ ดังนั้นการใช้fs.statหรือfs.statSync ( Synchronous ) fs.exists
แทน เพราะตาม Node.js ล่าสุดเอกสาร , fs.exists
ตอนนี้เลิกใช้
ตัวอย่างเช่น:-
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
และหากไฟล์ไม่มีอยู่คุณจะพบENOENT
ข้อผิดพลาดในการโทรกลับ ไม่จำเป็นต้องตรวจสอบก่อนที่จะพยายามยกเลิกการเชื่อมโยง
fs.unlink
ทำงานเมื่อไม่มีไฟล์อยู่ดังนั้นมุมมองของฉันคือไฟล์ตรวจสอบก่อนลบ
unlink
ติดต่อกลับ หากข้อผิดพลาดนั้นเกิดขึ้นแสดงว่าไฟล์นั้นไม่มีอยู่ ดูคำตอบของ Searene
ฉันไม่คิดว่าคุณต้องตรวจสอบว่ามีไฟล์อยู่หรือไม่fs.unlink
จะตรวจสอบให้คุณ
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`);
}
});
นี่คือตัวอย่างเล็ก ๆ ของฉันทำเพื่อจุดประสงค์นี้
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
และก่อนที่คุณจะเอามันออกไปด้วยfs.unlink
? มันอาจเกิดขึ้น
unlink
และถ้ามันไม่มีอยู่จัดการENOENT
ข้อผิดพลาด มิฉะนั้นคุณสามารถสร้างเงื่อนไขการแข่งขัน
เป็นคำตอบที่ยอมรับใช้fs.unlink
เพื่อลบไฟล์
แต่ตามเอกสารของ Node.js
ใช้
fs.stat()
ในการตรวจสอบสำหรับการดำรงอยู่ของไฟล์ก่อนที่จะเรียกfs.open()
,fs.readFile()
หรือfs.writeFile()
ไม่แนะนำ แต่รหัสผู้ใช้ควรเปิด / อ่าน / เขียนไฟล์โดยตรงและจัดการกับข้อผิดพลาดที่เกิดขึ้นหากไฟล์ไม่พร้อมใช้งานหากต้องการตรวจสอบว่ามีไฟล์อยู่หรือไม่โดยไม่ได้จัดการกับมันหลังจากนั้น
fs.access()
ขอแนะนำ
เพื่อตรวจสอบว่าสามารถลบไฟล์ได้หรือไม่ใช้fs.access
แทน
fs.access('/etc/passwd', fs.constants.R_OK | fs.constants.W_OK, (err) => {
console.log(err ? 'no access!' : 'can read/write');
});
unlink
โดยตรงเพราะพวกเขารู้ว่าพวกเขามีสิทธิ์ในการลบไฟล์ แต่fs.access
เป็นทางเลือกที่ดีหากพวกเขาจำเป็นต้องตรวจสอบก่อนที่จะลบ แต่ผมคิดว่าถ้าพวกเขาต้องตรวจสอบว่าไฟล์ที่มีอยู่โดยไม่ต้องจัดการกับมันหลังจากนั้นพวกเขาเป็นธรรมชาติควรใช้fs.stat
, fs.access
มีจุดประสงค์ที่แตกต่างกันในความต่ำต้อยของฉัน
ด้านล่างรหัสของฉันซึ่งใช้งานได้ดี
const fs = require('fs');
fs.unlink(__dirname+ '/test.txt', function (err) {
if (err) {
console.error(err);
}
console.log('File has been Deleted');
});
2019 และโหนด 10+ อยู่ที่นี่ ด้านล่างรุ่นโดยใช้หวานasync / รอคอยทาง
ตอนนี้ไม่จำเป็นต้องห่อfs.unlink
เป็นสัญญาหรือใช้แพ็คเกจเพิ่มเติม (เช่นfs-extra
) อีกต่อไป
เพียงใช้API Promises APIดั้งเดิม
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);
}
})();
นี่คือ fsPromises.unlink
ข้อมูลจำเพาะจาก Node docs
นอกจากนี้ยังโปรดทราบว่า fs.promises API ทำเครื่องหมายว่าการทดลองในโหนด 10.xx ( แต่ทำงานโดยสิ้นเชิงปรับแม้ว่า) 11.14.0
และไม่มีการทดลองตั้งแต่
คุณสามารถใช้โมดูลdelเพื่อลบไฟล์อย่างน้อยหนึ่งไฟล์ในไดเรกทอรีปัจจุบัน สิ่งที่ดีเกี่ยวกับมันคือการปกป้องคุณจากการลบไดเรกทอรีทำงานปัจจุบันและด้านบน
const del = require('del');
del(['<your pathere here>/*']).then( (paths: any) => {
console.log('Deleted files and folders:\n', paths.join('\n'));
});
คุณสามารถใช้ฟังก์ชั่นfs.unlink (path, callback) นี่คือตัวอย่างของ wrapper ฟังก์ชันที่มีรูปแบบ "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');
}
})
};
ลบไฟล์ออกจากไดเรกทอรีที่ตรงกับ regexp สำหรับชื่อไฟล์ ใช้เฉพาะ fs.unlink - เพื่อลบไฟล์ fs.readdir - เพื่อรับไฟล์ทั้งหมดจากไดเรกทอรี
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
var fs = require('fs');
try{
var sourceUrls = "/sampleFolder/sampleFile.txt";
fs.unlinkSync(sourceUrls);
}catch(err){
console.log(err);
}
fs-extra
ให้วิธีการลบ:
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
ใช้โมดูล NPM fs-extraซึ่งให้ทุกอย่างใน fs พร้อมกับ Promisified เป็นโบนัส, มีfs.remove () วิธีการที่มีอยู่
นี่คือรหัสที่คุณสามารถลบไฟล์ / ภาพจากโฟลเดอร์
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
ชื่อแทนได้!