Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/39.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何在NodeJS中使用fs删除扩展名未知的文件?_Javascript_Node.js_Fs - Fatal编程技术网

Javascript 如何在NodeJS中使用fs删除扩展名未知的文件?

Javascript 如何在NodeJS中使用fs删除扩展名未知的文件?,javascript,node.js,fs,Javascript,Node.js,Fs,我想删除名为myfile且具有任何扩展名的文件 const fs = require('fs') const ext = '' ; //this extension may be anything const path = './myfile.'+ext ; fs.unlink(path, (err) => { if (err) { console.error(err) return } //file removed }) 我得到

我想删除名为
myfile
且具有任何扩展名的文件

const fs = require('fs')
const ext = '' ; //this extension may be anything
const path = './myfile.'+ext ;

fs.unlink(path, (err) => {
    if (err) {
        console.error(err)
        return
    }
    //file removed
})
我得到的错误是:

没有名为myfile的文件或目录

但是我想删除一个名为
myfile.jpg
的文件。让我们假装我们不知道分机。如何删除它?

取消链接不支持正则表达式删除文件。您可能需要遍历文件夹,找到以“myfile”开头的文件名,并相应地将其删除

const fs = require('fs');
const director = 'path/to/directory/'

fs.readdir(directory, (err, files) => {
    files.forEach(file => {
        if(file.split('.')[0] == 'myfile') fs.unlink( directory + file );       
    });
});

取消链接不支持正则表达式删除文件。您可能需要遍历文件夹,找到以“myfile”开头的文件名,并相应地将其删除

const fs = require('fs');
const director = 'path/to/directory/'

fs.readdir(directory, (err, files) => {
    files.forEach(file => {
        if(file.split('.')[0] == 'myfile') fs.unlink( directory + file );       
    });
});

这回答了你的问题吗?添加了一个链接,显示如何查找所有文件,然后匹配扩展名<代码>取消链接需要指定一个特定的路径,因此您首先必须找到要事先删除的所有文件。没有神奇的功能。您必须编写自己的算法。获取目录中所有文件的列表。对于数组中的每个文件名,查找与所需名称匹配的所有文件名(您可以使用filter:
array.filter(x=>x.match(/^myfile.*/)
或者如果您不熟悉regexp
array.filter(x=>x.substr(0,7)==='myfile.')
)。然后对找到的每个文件名删除it@slebetman谢谢,但是如果我们有数千个文件,这个方法会花费很多时间,因为它必须获取所有文件。任何方法,即使是允许您指定文件名模式的方法,都必须遍历磁盘才能找到文件。这就是硬盘和文件系统的工作原理(各种操作系统中都有索引系统,可以加快搜索整个磁盘的速度,但通常搜索单个文件夹的速度要比旧方法快——此外,你不能相信所有启用索引系统的人,除了大多数人不知道如何关闭的Mac OS上的Spotlight之外)这回答了你的问题吗?添加了一个链接,显示如何查找所有文件,然后匹配扩展名<代码>取消链接需要指定一个特定的路径,因此您首先必须找到要事先删除的所有文件。没有神奇的功能。您必须编写自己的算法。获取目录中所有文件的列表。对于数组中的每个文件名,查找与所需名称匹配的所有文件名(您可以使用filter:
array.filter(x=>x.match(/^myfile.*/)
或者如果您不熟悉regexp
array.filter(x=>x.substr(0,7)==='myfile.')
)。然后对找到的每个文件名删除it@slebetman谢谢,但是如果我们有数千个文件,这个方法会花费很多时间,因为它必须获取所有文件。任何方法,即使是允许您指定文件名模式的方法,都必须遍历磁盘才能找到文件。这就是硬盘和文件系统的工作原理(各种操作系统中都有索引系统,可以加快搜索整个磁盘的速度,但通常搜索单个文件夹的速度要比旧方法快——此外,你不能相信所有启用索引系统的人,除了大多数人不知道如何关闭的Mac OS上的Spotlight之外)因此,该方法的思想是获取目录以查找具有该名称的任何文件。。如果我们有多个文件具有相同的名称和不同的ext,这也会起作用,非常感谢。因此,这种方法的思想是获取目录以查找任何具有该名称的文件。。如果我们有多个文件具有相同的名称和不同的ext,这也会起作用,非常感谢。