Maison >interface Web >js tutoriel >Comment copier des fichiers dans Nodejs_node.js

Comment copier des fichiers dans Nodejs_node.js

WBOY
WBOYoriginal
2016-05-16 15:11:141500parcourir

Tous les enfants du front-end savent que JavaScript n'est pas autorisé à exploiter les fichiers disque, et les enfants des serveurs l'ont toujours méprisé. Mais on peut dire que nodejs rend notre front-end fier. J'ai récemment appris node, et ses fonctions puissantes rendent les gens très excités et excités. Aujourd'hui, j'ai appris comment il lit et écrit des fichiers.

Vous devez d'abord présenter le module fs, fourni avec nodejs.

var fs=require("fs");
Pour plus de détails, veuillez vous référer à l'API Nodejs : http://www.w3cfuns.com/tools.php?mod=booknodejs

Il existe deux méthodes principales utilisées :

1. fs.readFile(nom de fichier, [encodage], [rappel])

Il s'agit d'une lecture asynchrone de fichiers, le nom de fichier est le chemin du fichier, l'encodage est le format d'encodage et le rappel est la fonction de rappel.

Lire de manière asynchrone tout le contenu d'un fichier, l'exemple est le suivant :

fs.readFile('/etc/passwd', function (err, data) {
 if (err) throw err;
 console.log(data);
});

Ici, j'utilise un fichier de test local :

function readFile(){
  console.log('--------开始读取文件--------');
  var fs = require('fs');
  fs.readFile('test.txt', 'utf-8', function(err, data) {
    if (err) {
      console.log("读取失败");
    } else {
      console.log(data);
      return data;
    }
  });
  console.log('--------读取结束--------');
}

2. fs.writeFile(filename, data, encoding='utf8', [callback])
Écrire le fichier :

function writeFile(data){
  fs.writeFile("test2.txt",data,function(error){
    if(error){
      throw error;
    }else{
      console.log("文件已保存");  
    }
  });
}

Code d'erreur : fichier copyFile.js

var fs=require("fs");
function readFile(){
  console.log('--------开始读取文件--------');
  var fs = require('fs');
  fs.readFile('test.txt', 'utf-8', function(err, data) {
    if (err) {
      console.log("读取失败");
    } else {
      console.log(data);
      return data;
    }
  });
  console.log('--------读取结束--------');
}

function writeFile(data){
  fs.writeFile("test2.txt",data,function(error){
    if(error){
      throw error;
    }else{
      console.log("文件已保存");  
    }
  });
}
function copyFile(){
  var txt=readFile();
  writeFile(txt);
}
copyFile();

Le résultat de l'exécution de node copyFile.js dans le terminal est le suivant :

Remarque :

1. Encodage du fichier. Au début, j'ai créé directement un nouveau document txt localement. Quand je l'ai lu, j'ai trouvé que le résultat était toujours aaaaaaa. Deuxièmement, il est préférable d'apporter un encodage, sinon il sera lu en fonction du tampon.

2. Problème d'exécution synchrone.

Il y a un problème avec le code ci-dessus. J'ai écrit les méthodes de lecture et d'écriture du fichier séparément. Je voulais à l'origine copier le contenu du fichier test.txt dans test2.txt, mais la lecture du fichier est exécutée de manière asynchrone. c'est-à-dire que personne ne sait quand il sera exécuté, donc le résultat de test.txt n'est pas défini.

La méthode correcte devrait être d'écrire le fichier après lecture :

var fs=require("fs");
function copyFile(){
  console.log('--------开始读取文件--------');
  var fs = require('fs');
  fs.readFile('test.txt', 'utf-8', function(err, data) {
    if (err) {
      console.log("读取失败");
    } else {
      writeFile(data)
      return data;
    }
  });
  console.log('--------读取结束--------');
}

function writeFile(data){
  console.log(data);
  fs.writeFile("test2.txt",data,'utf8',function(error){
    if(error){
      throw error;
    }else{
      console.log("文件已保存");  
    }
  });
}

copyFile();

Ce qui précède représente l’intégralité du contenu de cet article, j’espère qu’il sera utile à l’étude de chacun.

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn