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
削除コマンドが表示されませんか?
回答:
rmFileエイリアス
rm場合はエイリアスrmdir
fs.unlinkSync()
fs.unlink(path, callback)非同期unlink(2)またはfs.unlinkSync(path)同期unlink(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(同期)を使用してください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コールバックでENOENTエラーコードを確認してください。そのエラーが発生した場合、ファイルは存在しませんでした。たとえば、シーリーンの答えを見てください。
ファイルが存在するかどうかを確認する必要はないと思い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とNode 10+はこちらです。バージョンの下で、甘い非同期/待機方法を使用しています。
これで、Promiseにラップfs.unlinkしたり、(などfs-extra)追加のパッケージを使用したりする必要がなくなりました。
ネイティブのfs 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はNode 10.xxで試験的としてマークされています(ただし、完全に正常に動作します)11.14.0。
fs.unlink(path、callback)関数を使用できます。「エラーバック」パターンを使用した関数ラッパーの例を次に示します。
// 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');
}
})
};
ファイル名の正規表現に一致したディレクトリからファイルを削除します。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-extra removeメソッドを提供します:
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のすべてが提供され、さらにすべてが約束されます。おまけとして、利用可能な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エイリアスを追加できると思います!