Nodejs_node.js でファイルをコピーする方法

WBOY
リリース: 2016-05-16 15:11:14
オリジナル
1486 人が閲覧しました

フロントエンドの子供たちは皆、JavaScript にはディスク ファイルを操作する権限がないことを知っていますが、サーバーの子供たちは常にそれを軽蔑してきました。しかし、nodejs は私たちのフロントエンドを誇りに思っていると言えます。私は最近、node を勉強していますが、その強力な機能は人々をとても興奮させます。今日はファイルの読み取りと書き込みの仕組みを学びました。

まず、nodejs に付属する fs モジュールを導入する必要があります。

var fs=require("fs");
詳細については、Nodejs API を参照してください: http://www.w3cfuns.com/tools.php?mod=booknodejs

使用される主な方法は 2 つあります:

1. fs.readFile(ファイル名, [エンコーディング], [コールバック])

これはファイルの非同期読み取りです。filename はファイル パス、encoding はエンコード形式、callback はコールバック関数です。

ファイルのすべての内容を非同期的に読み取ります。例は次のとおりです:

fs.readFile('/etc/passwd', function (err, data) {
 if (err) throw err;
 console.log(data);
});
ログイン後にコピー

ここではローカル テスト ファイルを使用しています:

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(ファイル名, データ, エンコーディング='utf8', [コールバック])
ファイルの書き込み:

function writeFile(data){
  fs.writeFile("test2.txt",data,function(error){
    if(error){
      throw error;
    }else{
      console.log("文件已保存");  
    }
  });
}
ログイン後にコピー

エラー コード: 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();

ログイン後にコピー

ターミナルでノード copyFile.js を実行した結果は次のとおりです:

注:

1. ファイルのエンコード。最初はローカルで新しい txt ドキュメントを作成しましたが、それをエディタで開くと、結果は常に文字化けしていました。次に、encoding を使用するのが最善です。そうでない場合は、バッファに従って読み込まれます。

2. 同期実行の問題。

上記のコードには問題があり、ファイルの読み取りと書き込みのメソッドを別々に記述しました。本来は test.txt ファイルの内容を test2.txt にコピーするつもりでしたが、ファイルの読み取りは非同期で実行されます。つまり、いつ実行されるかは誰にも分からないため、test.txt の結果は未定義になります。

正しい方法は、読み取り後にファイルを書き込むことです:

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();
ログイン後にコピー

以上がこの記事の全内容です。皆様の学習のお役に立てれば幸いです。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート