如何在fs.writeFile()的绝对文件路径中加入变量指定文件位置
问题解决方法
首先你的代码里路径拼接存在语法错误,'E:\\IGEM\\orders\\'filename 缺少字符串连接符 +,会导致代码无法正常运行。要实现将文件生成到指定目录且使用filename作为文件名,有两种可靠的实现方式:
方法一:手动修正路径拼接
补全字符串连接符,将指定目录路径与文件名正确拼接:
let fd = xeleCatalog.descendantFirst('order'); let file = fd.toXmlString(); let filename = data['Testorders.ID'].toString().concat(".xml"); // 修正拼接语法,添加 + 连接目录与文件名 let path = 'E:\\IGEM\\orders\\' + filename; fs.writeFile(path, file, function (err) { if (err) throw err; console.log('Created XML file for TestOrder ID:'+ filename); });
方法二:使用Node.js的path模块(推荐)
借助path模块的join方法自动处理路径分隔符,避免手动拼接的潜在错误,同时兼容不同操作系统:
// 先引入path模块 const path = require('path'); let fd = xeleCatalog.descendantFirst('order'); let file = fd.toXmlString(); let filename = data['Testorders.ID'].toString().concat(".xml"); // 用path.join拼接目录与文件名 let targetPath = path.join('E:\\IGEM\\orders', filename); fs.writeFile(targetPath, file, function (err) { if (err) throw err; console.log('Created XML file for TestOrder ID:'+ filename); });
额外注意事项
如果E:\IGEM\orders目录不存在,fs.writeFile会直接报错。若需要自动创建目标目录,可以搭配fs.mkdir的recursive参数实现:
const fs = require('fs'); const path = require('path'); let fd = xeleCatalog.descendantFirst('order'); let file = fd.toXmlString(); let filename = data['Testorders.ID'].toString().concat(".xml"); let targetDir = 'E:\\IGEM\\orders'; let targetPath = path.join(targetDir, filename); // 先创建目录(不存在则自动递归创建) fs.mkdir(targetDir, { recursive: true }, (err) => { if (err) throw err; // 目录就绪后写入文件 fs.writeFile(targetPath, file, function (err) { if (err) throw err; console.log('Created XML file for TestOrder ID:'+ filename); }); });
内容的提问来源于stack exchange,提问作者Mohammad Zarak
相关产品推荐
相关产品推荐

