joao
joao

Reputation: 61

Whats the best way to copy files from 2 diferents folders to a new one using javascript?

Im setting up a program that will check two different folder and copy all the files from the in a third one. The problem for me here is how to copy them without their names?

var fs = require("fs");

fs.renameSync("/home/oem/git/test/folder1/test1.js", "/home/oem/git/test/folder1/test1CHANGED.js")

console.log("file renamed");

fs.rename("/home/oem/git/test/folder1/test2", "/home/oem/git/test/folder2", function(err){
    if(err)
    {
        console.log(err);
    }
    else
    {
        console.log("file moved successfully");
    }
});

with the code above i can move files that i manually write thei r names, i want to implement it somehow that it will automatically scan the folder and change them to the other one!

Upvotes: 0

Views: 108

Answers (3)

Pascal Tovohery
Pascal Tovohery

Reputation: 986

The fastest way to copy file

const fs = require('fs');

function copies(fs, files, destination)
{
  for (i=0;i<files.length;i++) {

    // destination file will be created or overwritten by default.
    fs.copyFile(files[i], destionation + '/' + files[i].replace(/^.*[\\\/]/, ''), (err) => {
    if (err) throw err;
      console.log(files[i] +' was copied to ' + destination);
    });
  }
}

var files = ['/path/to/source/files.txt', '/sources/files/files2.txt'];

var destination = '/file/would/copy/to';

copies(fs, files, destination);

Upvotes: 1

Mohammed Salah
Mohammed Salah

Reputation: 144

Here a Function that could help you to do this

const fs = require('fs');
const path = require('path');

function copyFiles() {
    const firstFolder = 'firstFolder';
    const secondFolder = 'secondFolder';
    const destinationFolder = 'destinationFolder';
    const firstDir = path.join(__dirname, firstFolder);
    const secondDir = path.join(__dirname, secondFolder);
    const destDir = path.join(__dirname, destinationFolder);
    fs.readdir(firstDir, (err, files) => {
        if (err) {
            throw err;
        }
        for (let i = 0; i < files.length; i += 1) {
            fs.copyFile(firstDir + '/' + files[i], destDir + '/' + files[i], function (err) {
                if (err)
                    throw err;
            });
        }

    });
    fs.readdir(secondDir, (err, files) => {
        if (err) {
            throw err;
        }
        for (let i = 0; i < files.length; i += 1) {
            fs.copyFile(secondDir + '/' + files[i], destDir + '/' + files[i], function (err) {
                if (err)
                    throw err;
            });
        }

    });
}

copyFiles();

Upvotes: 3

Dabees
Dabees

Reputation: 504

You should take a look on nodes docs where it mentions this more detailed

If I may assume that there is two folder folder1 and folder2

folder1 where there is file word.txt and folder2 is empty

In the script file(assuming also that it lives with the two folders) you can write

const fs = require('fs');

// destination.txt will be created or overwritten by default.
// you can do the renaming here
fs.copyFile('./folder1/word.txt', './folder2/destination.txt', (err) => {
  if (err) throw err;
  console.log('word.txt was copied to destination.txt');
});

Upvotes: 1

Related Questions