Uczymy się kopiować pliki za pomocą node.js oraz znanych nam modułów path i filesystem. Do dzieła.

Standardowo zaczynamy od kodu:

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

function file(filename) {
    return path.join(__dirname, "files", filename);
}

Plik lorem.txt istnieje, plik lorem_copy.txt ma istnieć po wykonaniu skryptu:

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

function file(filename) {
    return path.join(__dirname, "files", filename);
}

var loremPath = file('lorem.txt');
var loremCopyPath = file('lorem_copy.txt');

Teraz możemy kopiować:

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

function file(filename) {
    return path.join(__dirname, "files", filename);
}

var loremPath = file('lorem.txt');
var loremCopyPath = file('lorem_copy.txt');

fs.copyFile(loremPath, loremCopyPath, function(err){
    if(err){
        console.log(`Error occured: ${err.message}`);
        return;
    }
    console.log('File copied!');
});

Ok, staramy się napisać funkcję do tego:

var loremPath = file('lorem.txt');

function copyFile(fPath){
    var basename = path.basename(fPath);
    console.log(basename);
}

copyFile(loremPath);
//lorem.txt

Kombinujemy dalej:

var loremPath = file('lorem.txt');

function copyFile(fPath){
    var basename = path.basename(fPath, ".txt");
    console.log(basename);
}

copyFile(loremPath);
//lorem

Dalej kombinujemy aż do skutku:

var loremPath = file('lorem.txt');

function copyFile(fPath){

    var extension = path.extname(fPath);
    var basename = path.basename(fPath, extension);
    var copyBasename = basename + "_copy" + extension;

    console.log(path.basename(fPath));
    console.log(copyBasename);
}

copyFile(loremPath);
// lorem.txt
// lorem_copy.txt

Jakby jeszcze coś nie było jasne:

var loremPath = file('lorem.txt');

function copyFile(fPath){

    var extension = path.extname(fPath);
    var basename = path.basename(fPath, extension);
    var copyBasename = basename + "_copy" + extension;

    console.log(path.basename(fPath));
    console.log(copyBasename);
    console.log(fPath, file(copyBasename));
}

copyFile(loremPath);
// lorem.txt
// lorem_copy.txt
// C:\Users\node1\files\lorem.txt C:\Users\\node1\files\lorem_copy.txt

Teraz możemy już poskładać to do kupy i kopiować:

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

function file(filename) {
    return path.join(__dirname, "files", filename);
}

var loremPath = file('lorem.txt');

function copyFile(fPath){

    var extension = path.extname(fPath);
    var basename = path.basename(fPath, extension);
    var copyBasename = basename + "_copy" + extension;

    fs.copyFile(fPath, file(copyBasename), function(err){
        if(err){
            console.log(`Error occured: ${err.message}`);
            return;
        }
        console.log('File copied!');
    });
}

copyFile(loremPath);

Warto znać moduł path – nie jest duży, ale bardzo użyteczny. Tym bardziej warto.