Maison >interface Web >js tutoriel >Renommer le lot de fichiers de nœuds
Cette fois, je vais vous présenter le renommage par lots des fichiers de nœuds. Quelles sont les précautions pour le renommage par lots des fichiers de nœuds. Ce qui suit est un cas pratique, jetons un coup d'œil.
Dans une exigence réelle, un lot de fichiers (tels que du texte, des images) doit être renommé et numéroté en fonction des numéros. J'ai juste profité de cette occasion pour me familiariser avec les opérations sur les fichiers fs du nœud et j'ai écrit un script pour modifier par lots les noms de fichiers.
Exigences
Les fichiers images suivants sont disponibles
Avant modification
Il est nécessaire de modifier les noms de fichiers par lots, de les changer en noms de préfixes unifiés et d'augmenter automatiquement l'index. L'effet après modification est
Après modification<.>
L'opération manuelle la plus simple est de renommer les fichiers un par un, mais conformément au principe DRY (Ne vous répétez pas), il est préférable d'écrire un script de nœud pour fais-le. RecherchePour effectuer des opérations sur les fichiers dans le nœud, vous devez comprendre le module fsIl existe deux manières de synchrone et d'asynchrone dans le module fs
//异步fs.readFile('test.txt', 'utf-8' (err, data) => { if (err) { throw err; } console.log(data); });//同步let data = fs.readFileSync('test.txt');console.log(data);Paramètres du fichier de lecture asynchrone : chemin du fichier, méthode d'encodage, Écrire le fichier
fs.writeFile('test2.txt', 'this is text', { 'flag': 'w' }, err => { if (err) { throw err; } console.log('saved'); });Paramètres d'écriture du fichier : fichier cible, contenu d'écriture, formulaire d'écriture, fonction de rappel
méthode d'écriture du drapeau :
a : Ajouter Créer le répertoire
fs.mkdir('dir', (err) => { if (err) { throw err; } console.log('make dir success'); });dir est le nom du nouveau répertoire Lire le répertoire
fs.readdir('dir',(err, files) => { if (err) { throw err; } console.log(files); });dir est le nom du répertoire lu, files est un tableau de fichiers ou de noms de répertoires sous le répertoire Obtenir les informations sur les fichiers
fs.stat('test.txt', (err, stats)=> { console.log(stats.isFile()); //true})Méthode Stats après avoir obtenu les informations sur les fichiers :
stats.isFile() 是否为文件 stats.isDirectory() 是否为目录 stats.isBlockDevice() 是否为块设备 stats.isCharacterDevice() 是否为字符设备 stats.isSymbolicLink() 是否为软链接 stats.isFIFO() 是否为UNIX FIFO命令管道 stats.isSocket() 是否为SocketCréer un flux de lecture
let stream = fs.createReadStream('test.txt');Créer un flux d'écriture
let stream = fs.createWriteStreamr('test_copy.txt');Développement
Idée de développement : Lire le répertoire sourceJuger si le répertoire de stockage existe, et créer un nouveau répertoire s'il n'existe pasCopiez le fichierJuger du contenu copié S'il faut créer un flux de lecture pour le fichier Créer un flux d'écriture tuyau de lien et écrire le contenu du fichier
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++; }) }Je crois avoir lu le cas dans cet article. Vous maîtrisez la méthode. Pour des informations plus intéressantes, veuillez prêter attention aux autres articles connexes sur le site Web chinois de php ! Lecture recommandée :
Utiliser le code JS pour créer des effets de barrage
Utiliser le canevas H5 pour créer des effets de barrage
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!