假设我有两个文件 a_b_c_d.txt 和 e_f_g_h.png S,在运行时,即通过使用命令提示符,我必须在 a.txt 内的 d 文件夹内的 c 文件夹内创建 b 文件夹,对于另一个文件 f-> g->h->e.png 我在 a 中有一些文本,在 epng 中有一些图像。.所以,我怎样才能从那些现有文件中获取值到创建的文件中。.
问问题
222 次
2 回答
1
You can find all the file system operations inside the fs module. http://nodejs.org/api/fs.html
But like tapan says if you need to do complex synchronous execution that manipulates the file system something like Bash will be a lot better suited for that.
于 2012-05-18T10:04:34.400 回答
0
因此,如果我对您的理解正确,您希望在某个文件夹中获取一个名为“a_b_c_d.txt”的文件,并将其移动到嵌套文件夹中,如下所示:
./a_b_c_d.txt -> ./b/c/d/a.txt
一般的解决方案是:
- 如果文件名
process.argv
不同,请使用它。例如,如果您将文件作为参数提供给节点,例如node move.js "a_b_c_d.txt"
,参数“a_b_c_d.txt”将在 argv 数组中。 - 使用字符串和数组方法的组合处理文件名。
__dirname
如果需要,节点当前目录存储在全局变量中。split(...)
您可以使用字符串的方法将扩展名与路径的其余部分分开。对于上述参数,split('.')
将导致数组['a_b_c_d', 'txt']
- 然后,您可以
'a_b_c_d'
使用拆分'_'
,并使用各种数组操作将文件名'a'
从数组中提取出来,这样您就可以将路径['b', 'c', 'd']
、文件名和扩展名留在它们自己的变量中。
- 在路径数组上使用
fs.mkdirSync(...)
以创建每个嵌套文件夹,从b
(例如使用数组的forEach(...)
方法)开始。您也可以使用异步fs.mkdir(...)
和供应回调,但在这种情况下同步版本更容易。 - 最后使用
fs.renameSync(...)
移动./a_b_c_d.txt
到./b/c/d/a.txt
。
如您所见,python 或 bash(如 tapan 建议的那样)对于此用例可能会更简单,但如果由于某种原因您必须使用 node,上述建议有望足以让您入门。
于 2012-05-19T14:25:44.420 回答