Heim >Web-Frontend >js-Tutorial >Stapelumbenennung der Knotendatei

Stapelumbenennung der Knotendatei

php中世界最好的语言
php中世界最好的语言Original
2018-03-13 17:14:071615Durchsuche

Dieses Mal werde ich Ihnen die Batch-Umbenennung von Knotendateien vorstellen. Was sind die Vorsichtsmaßnahmen für die Batch-Umbenennung von Knotendateien? Das Folgende ist ein praktischer Fall, schauen wir uns das an.

In einer tatsächlichen Anforderung muss ein Stapel von Dateien (z. B. Text, Bilder) umbenannt und entsprechend den Nummern nummeriert werden. Ich habe gerade diese Gelegenheit genutzt, um mich mit den FS-Dateioperationen des Knotens vertraut zu machen, und ein Skript geschrieben, um Dateinamen stapelweise zu ändern.

Anforderungen

Folgende Bilddateien sind verfügbar

Stapelumbenennung der Knotendatei


Vor der Änderung

Es ist notwendig, die Dateinamen stapelweise zu ändern, sie in einheitliche Präfixnamen zu ändern und den Index automatisch zu erhöhen. Der Effekt nach der Änderung ist



Nach der Änderung

Stapelumbenennung der Knotendatei

Der einfachste manuelle Vorgang besteht darin, Dateien einzeln umzubenennen. Im Einklang mit dem DRY-Prinzip (Wiederholen Sie sich nicht) ist es jedoch besser, ein Knotenskript zu schreiben Mach es.

Forschung

Um Dateioperationen im Knoten auszuführen, müssen Sie das fs-Modul verstehen

Im fs-Modul gibt es zwei synchrone und asynchrone Möglichkeiten

Dateien lesen

//异步fs.readFile('test.txt', 'utf-8' (err, data) => {    if (err) {        throw err;
    }    console.log(data);
});//同步let data = fs.readFileSync('test.txt');console.log(data);
Asynchrones Lesen von Dateiparametern: Dateipfad, Kodierungsmethode,

Rückruffunktion

Datei schreiben

fs.writeFile('test2.txt', 'this is text', { 'flag': 'w' }, err => {    if (err) {        throw err;
    }    console.log('saved');
});
Dateiparameter schreiben: Zieldatei, Inhalt schreiben, Formular schreiben, Rückruffunktion

Flag-Schreibmethode:

r: Datei lesen

w: Datei schreiben

a : Anhängen

Verzeichnis erstellen

fs.mkdir('dir', (err) => {    if (err) {        throw err;
    }    console.log('make dir success');
});
dir ist der Name des neuen Verzeichnisses

Verzeichnis lesen

fs.readdir('dir',(err, files) => {    if (err) {        throw err;
    }    console.log(files);
});
dir ist der Name des gelesenen Verzeichnisses, files ist ein Array von Dateien oder Verzeichnisnamen unter dem Verzeichnis

Dateiinformationen abrufen

fs.stat('test.txt', (err, stats)=> {    console.log(stats.isFile());         //true})
Statistikmethode nach dem Abrufen von Dateiinformationen:


Methode

Beschreibung

stats.isFile()    是否为文件    
stats.isDirectory()    是否为目录    
stats.isBlockDevice()    是否为块设备    
stats.isCharacterDevice()    是否为字符设备    
stats.isSymbolicLink()    是否为软链接    
stats.isFIFO()    是否为UNIX FIFO命令管道    
stats.isSocket()    是否为Socket
Lesestream erstellen

let stream = fs.createReadStream('test.txt');
Schreibstream erstellen

let stream = fs.createWriteStreamr('test_copy.txt');
Entwicklung

Entwicklungsidee:

Quellverzeichnis lesen

Beurteilen Sie, ob das Speicherverzeichnis vorhanden ist, und erstellen Sie ein neues Verzeichnis, wenn es nicht vorhanden ist

Kopieren Sie die Datei

Beurteilen Sie den kopierten Inhalt. Ob ein Lesestream für die Datei erstellt werden soll

Erstellen Sie einen Schreibstream

Link-Pipe und schreiben Sie den Dateiinhalt

let fs = require('fs'),
    src = 'src',
    dist = 'dist',
    args = process.argv.slice(2),
    filename = 'image',
    index = 0;//show helpif (args.length === 0 || args[0].match('--help')) {    console.log('--help\n \t-src 文件源\n \t-dist 文件目标\n \t-n 文件名\n \t-i 文件名索引\n');    return false;
}
args.forEach((item, i) => {    if (item.match('-src')) {
        src = args[i + 1];
    } else if (item.match('-dist')) {
        dist = args[i + 1];
    } else if (item.match('-n')) {
        filename = args[i + 1];
    } else if (item.match('-i')) {
        index = args[i + 1];
    }
});
fs.readdir(src, (err, files) => {    if (err) {        console.log(err);
    } else {
        fs.exists(dist, exist => {            if (exist) {
                copyFile(files, src, dist, filename, index);
            } else {
                fs.mkdir(dist, () => {
                    copyFile(files, src, dist, filename, index);
                })
            }
        });
    }
});function copyFile(files, src, dist, filename, index) {
    files.forEach(n => {        let readStream,
            writeStream,
            arr = n.split('.'),
            oldPath = src + '/' + n,
            newPath = dist + '/' + filename + index + '.' + arr[arr.length - 1];
        fs.stat(oldPath, (err, stats) => {            if (err) {                console.log(err);
            } else if (stats.isFile()) {
                readStream = fs.createReadStream(oldPath);
                writeStream = fs.createWriteStream(newPath);
                readStream.pipe(writeStream);
            }
        });
        index++;
    })
}
Ich glaube, ich habe den Fall in diesem Artikel gelesen. Sie beherrschen die Methode. Weitere spannende Informationen finden Sie in anderen verwandten Artikeln auf der chinesischen PHP-Website!

Empfohlene Lektüre:

Verwenden von JS-Code zum Erstellen von Sperreffekten

Verwenden von H5-Canvas zum Erstellen von Sperreffekten

Das obige ist der detaillierte Inhalt vonStapelumbenennung der Knotendatei. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn