如何在Node.js中将默认下载文件夹的Excel文件移动到项目文件夹
Node.js 实现带通配符的文件移动(从下载文件夹到项目文件夹)
要实现你的需求,需要结合 fs-extra 和 glob 包:fs-extra 负责文件移动操作,glob 用来处理通配符匹配文件。
1. 安装依赖
首先安装所需的两个包:
npm install fs-extra glob
2. 核心实现代码
下面是适配多系统的完整代码,支持通配符匹配并移动文件:
const fs = require('fs-extra'); const glob = require('glob'); const os = require('os'); const path = require('path'); // 定义路径:动态获取默认下载文件夹,适配Windows/macOS/Linux const downloadDir = path.join(os.homedir(), 'Downloads'); // 替换为你的项目目标文件夹路径(可使用相对或绝对路径) const projectDir = path.join(__dirname, 'target-folder'); // 用通配符匹配下载文件夹中的目标文件 glob(`${downloadDir}/file1_02262023_*.xlsx`, (err, matchedFiles) => { if (err) { console.error('匹配文件时出错:', err); return; } // 遍历匹配到的文件,逐个移动 matchedFiles.forEach(filePath => { const fileName = path.basename(filePath); const targetPath = path.join(projectDir, fileName); // 执行移动,设置overwrite: true可覆盖已存在的同名文件 fs.move(filePath, targetPath, { overwrite: true }) .then(() => console.log(`成功移动:${fileName}`)) .catch(moveErr => console.error(`移动失败 ${fileName}:`, moveErr)); }); });
3. 关键说明
- 通配符处理:
glob包专门负责解析file1_02262023_*.xlsx这类通配符,找出所有符合规则的文件。 - 跨系统路径适配:用
os.homedir()获取用户主目录,结合path.join拼接路径,避免Windows和类Unix系统的路径格式差异。 - 可靠的移动操作:
fs-extra的move方法比Node.js原生fs.rename更稳定,支持跨磁盘分区移动,还提供覆盖选项。
同步版本(可选)
如果偏好同步写法,可使用以下代码:
const fs = require('fs-extra'); const glob = require('glob'); const os = require('os'); const path = require('path'); const downloadDir = path.join(os.homedir(), 'Downloads'); const projectDir = path.join(__dirname, 'target-folder'); try { const matchedFiles = glob.sync(`${downloadDir}/file1_02262023_*.xlsx`); matchedFiles.forEach(filePath => { const fileName = path.basename(filePath); const targetPath = path.join(projectDir, fileName); fs.moveSync(filePath, targetPath, { overwrite: true }); console.log(`成功移动:${fileName}`); }); } catch (err) { console.error('操作失败:', err); }
内容的提问来源于stack exchange,提问作者user8015092
相关产品推荐
相关产品推荐

