Heim  >  Artikel  >  Web-Frontend  >  Ausführliche Erläuterung der Beispiele für die Stapelumbenennung von Knotendateien

Ausführliche Erläuterung der Beispiele für die Stapelumbenennung von Knotendateien

小云云
小云云Original
2018-01-20 17:45:441896Durchsuche

In diesem Artikel werden hauptsächlich Beispiele für die Stapelumbenennung von Knotendateien vorgestellt. Der Herausgeber findet ihn recht gut, daher werde ich ihn jetzt mit Ihnen teilen und als Referenz verwenden. Folgen wir dem Herausgeber und schauen wir uns das an. Ich hoffe, es kann allen helfen.

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

Die folgenden Bilddateien sind derzeit vorhanden

Die Dateinamen benötigen stapelweise geändert werden, zu einem einheitlichen Präfixnamen werden und den Index automatisch erhöhen. Der geänderte Effekt ist

Der einfachste manuelle Vorgang besteht darin, Dateien einzeln umzubenennen , aber im Sinne des DRY-Prinzips (Wiederholen Sie sich nicht) ist es besser, ein Knotenskript zu schreiben.

Forschung

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

Es gibt synchrone und asynchrone im fs-Modul Zwei 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);

Dateiparameter asynchron lesen: Dateipfad, Codierungsmethode, Rückruf Funktion

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 gelesene Verzeichnisname, files ist das Datei- oder Verzeichnisnamen-Array unter dem Verzeichnis

Dateiinformationen abrufen


fs.stat('test.txt', (err, stats)=> {
  console.log(stats.isFile());     //true
})

Statistikmethode nach Erhalt der Dateiinformationen:

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

Erstellen Sie einen Lesestream


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

Schreibstream erstellen


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

Entwicklung

Entwicklungsideen:

  1. Lesen Sie das Quellverzeichnis

  2. Überprüfen Sie, ob das Speicherverzeichnis existiert, und erstellen Sie ein neues Verzeichnis, wenn es nicht existiert

  3. Kopieren Sie die Datei

  4. Bestimmen Sie, ob es sich bei dem kopierten Inhalt um eine Datei handelt

  5. Erstellen Sie einen Lesestream

  6. Schreibstream erstellen

  7. Pipe verknüpfen, Dateiinhalt schreiben


let fs = require('fs'),
  src = 'src',
  dist = 'dist',
  args = process.argv.slice(2),
  filename = 'image',
  index = 0;

//show help
if (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++;
  })
}

Wirkung

Zusammenfassung

Node bietet viele Module, die uns dabei helfen, die funktionale Entwicklung verschiedener Anforderungen abzuschließen, sodass Javascript nicht auf Browser beschränkt ist Einige Skripte selbst zu schreiben hilft, diese Module zu verstehen und verbessert auch die Büroeffizienz.

Verwandte Empfehlungen:

So verwenden Sie den Knoten, um eine Funktion zum Batch-Umbenennen von Dateien zu implementieren

PHP-Batch-Umbenennung einer bestimmten Datei Datei Einführung in die Implementierungsmethode aller Dateien im Ordner

PHP-Batch-Umbenennung

Das obige ist der detaillierte Inhalt vonAusführliche Erläuterung der Beispiele für die Stapelumbenennung von Knotendateien. 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