如何使用node.js动态地将图片和文本从一个文件复制到另一个文件中

时间:2012-05-18 08:45:50

标签: node.js

假设我有两个文件a_b_c_d.txt和e_f_g_h.png S,在运行时即使用命令提示符我必须在a.txt内的那个d文件夹内的那个c文件夹中创建b文件夹,同样也用于另一个文件f-> g-> h-> e.png并且我在a和epng中的图像中有一些文本。那么,我如何从现有文件中获取值到创建的文件中。

2 个答案:

答案 0 :(得分:1)

您可以在fs模块中找到所有文件系统操作。 http://nodejs.org/api/fs.html

但是像tapan所说的那样,如果你需要进行复杂的同步执行来操作文件系统,那么像Bash这样的东西会更适合它。

答案 1 :(得分:0)

因此,如果我正确理解您,您想在某个文件夹中获取名为“a_b_c_d.txt”的文件,并将其移动到嵌套文件夹中:

    ./a_b_c_d.txt -> ./b/c/d/a.txt

一般的解决方案是:

  1. 如果文件名不同,请使用process.argv抓取文件名。 例如,如果您将文件作为参数提供给节点,例如 node move.js "a_b_c_d.txt",参数“a_b_c_d.txt”将在argv数组中。
  2. 使用stringarray methods的组合处理文件名。
    • 节点当前目录存储在__dirname全局变量中 如果你需要它。
    • 您可以从路径的其余部分拆分扩展 使用字符串的split(...)方法。 对于上述参数,split('.')将生成数组['a_b_c_d', 'txt']
    • 然后,您可以使用'a_b_c_d'拆分'_', 并使用各种数组操作来提取文件名'a' 离开数组,以便留下路径['b', 'c', 'd'] 并且文件名和扩展名位于各自的变量中。
  3. 在路径数组上使用fs.mkdirSync(...)来创建每个嵌套文件夹, 从b开始(例如,使用数组的forEach(...)方法)。 您还可以使用异步fs.mkdir(...)并提供回调, 但在这种情况下,同步版本更容易。
  4. 最后使用fs.renameSync(...)./a_b_c_d.txt移至./b/c/d/a.txt
  5. 正如你所看到的,python或bash(如tapan所建议的)对于这个用例可能更简单,但是如果由于某种原因你来使用节点,那么上面的建议就足够了让你入门。