Node.js を使用しているときにファイルに書き込む方法を見つけようとしましたが、成功しませんでした。どうやってやるの?
19 に答える
File System APIには多くの詳細があります。最も一般的な方法は次のとおりです。
const fs = require('fs');
fs.writeFile("/tmp/test", "Hey there!", function(err) {
if(err) {
return console.log(err);
}
console.log("The file was saved!");
});
// Or
fs.writeFileSync('/tmp/test-sync', 'Hey there!');
現在、ファイルを書き込むには 3 つの方法があります。
fs.write(fd, buffer, offset, length, position, callback
)バッファがディスクに書き込まれることを確認するには、コールバックを待つ必要があります。バッファリングされていません。
fs.writeFile(filename, data, [encoding], callback)
すべてのデータは同時に保存する必要があります。順次書き込みは実行できません。
fs.createWriteStream(path, [options]
)コール
WriteStream
バックを待つ必要がないので便利です。しかし、繰り返しますが、バッファリングされていません。
名前が示すように、 AWriteStream
はストリームです。定義上、ストリームは一方向 (ソース ► 宛先) に移動するデータを含む「バッファ」です。しかし、書き込み可能なストリームは必ずしも「バッファリング」されているわけではありません。timeを書き込むと、ストリームは「バッファリング」さn
れ、timen+1
で、ストリームはバッファをカーネルに送信します (満杯でフラッシュする必要があるため)。
つまり、「バッファ」がオブジェクトです。「バッファリングされる」かどうかは、そのオブジェクトのプロパティです。
コードを見ると、WriteStream
は書き込み可能なオブジェクトから継承していStream
ます。注意を払うと、コンテンツがどのようにフラッシュされるかがわかります。バッファリングシステムはありません。
文字列を書き込むと、バッファに変換されてからネイティブ レイヤーに送信され、ディスクに書き込まれます。文字列を書き込むとき、バッファがいっぱいになることはありません。したがって、次のようにします。
write("a")
write("b")
write("c")
あなたはやっている:
fs.write(new Buffer("a"))
fs.write(new Buffer("b"))
fs.write(new Buffer("c"))
これは、I/O レイヤーへの3 つの呼び出しです。「バッファ」を使用していますが、データはバッファリングされません。バッファリングされたストリームは次のことを行います: fs.write(new Buffer ("abc"))
、I/O レイヤーへの 1 回の呼び出し。
現在、Node.js v0.12 (2015 年 2 月 6 日に発表された安定版) では、
cork()
と の 2 つの関数がサポートされるようになり
uncork()
ました。これらの関数により、最終的に書き込み呼び出しをバッファリング/フラッシュできるようになります。
たとえば、Java には、バッファリングされたストリーム ( BufferedOutputStream
、BufferedWriter
...) を提供するクラスがいくつかあります。3 バイトを書き込むと、3 バイトだけ I/O 呼び出しを行う代わりに、これらのバイトがバッファ (メモリ) に格納されます。バッファがいっぱいになると、コンテンツがフラッシュされてディスクに保存されます。これにより、パフォーマンスが向上します。
ディスクアクセスの方法を覚えているだけで、何も発見していません。
もちろん、もう少し高度にすることもできます。ノンブロッキング、ビットとピースの書き込み、ファイル全体の書き込みではない:
var fs = require('fs');
var stream = fs.createWriteStream("my_file.txt");
stream.once('open', function(fd) {
stream.write("My first row\n");
stream.write("My second row\n");
stream.end();
});
./articles/file-system の Index が気に入りました。
それは私のために働いた。
node.js にファイルを書き込むにはどうすればよいですか?も参照してください。.
fs = require('fs');
fs.writeFile('helloworld.txt', 'Hello World!', function (err) {
if (err)
return console.log(err);
console.log('Wrote Hello World in file helloworld.txt, just check it');
});
helloworld.txt の内容:
Hello World!
更新:
Linux node write in current directory のように、他のいくつかのノードではそうでないように思われるので、念のためこのコメントを追加します:
Using this ROOT_APP_PATH = fs.realpathSync('.'); console.log(ROOT_APP_PATH);
to get where the file is written.
OK、ノードにはこのための機能が組み込まれているため、非常に簡単です。ファイルシステムと基本的にはNodeJSファイルシステムモジュールfs
を表すと呼ばれます...
最初に、次のようにserver.jsファイルでそれを必要とします。
var fs = require('fs');
fs
ファイルに書き込む方法はほとんどありませんが、私の好みの方法は を使用することですappendFile
。これにより、ファイルに内容が追加され、ファイルが存在しない場合はファイルが作成されます。コードは次のようになります。
fs.appendFile('myFile.txt', 'Hi Ali!', function (err) {
if (err) throw err;
console.log('Thanks, It\'s saved to the file!');
});
var fs = require('fs');
fs.writeFile(path + "\\message.txt", "Hello", function(err){
if (err) throw err;
console.log("success");
});
例: ファイルを読み取り、別のファイルに書き込みます。
var fs = require('fs');
var path = process.cwd();
fs.readFile(path+"\\from.txt",function(err,data)
{
if(err)
console.log(err)
else
{
fs.writeFile(path+"\\to.text",function(erro){
if(erro)
console.log("error : "+erro);
else
console.log("success");
});
}
});
ライブラリを使用できますeasy-file-manager
最初にnpmからインストール
npm install easy-file-manager
ファイルのアップロードと削除のサンプル
var filemanager = require('easy-file-manager')
var path = "/public"
var filename = "test.jpg"
var data; // buffered image
filemanager.upload(path,filename,data,function(err){
if (err) console.log(err);
});
filemanager.remove(path,"aa,filename,function(isSuccess){
if (err) console.log(err);
});