• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:Node.js ファイル操作の非同期処理について。)

Node.jsファイル操作の非同期処理について

Proof4の回答

  • ベストアンサー
  • Proof4
  • ベストアンサー率78% (151/192)
回答No.1

コメントの部分の説明は合っています。 コメントの部分でファイル読み込みを行っていて、fs.writeFileでのファイル書き込みにものすごく時間がかかる場合を考えます。Node.jsはファイルI/O(非同期 I/O)の完了を待たずに次の処理を実行することができるため、ファイルの書き込み操作を非同期I/Oに任せている間にもファイルの読み込み操作が開始されます。場合によっては読み込みの方が書き込みよりも早く完了する可能性があります。 質問文のタスクキューの実行フローで説明すると、 「ファイルの書き込み操作」がデキューされ実行 され、非同期I/Oによる処理が行われている間に 「ファイルの読み込み操作」がデキューされ実行 され、後者の方が早く完了する可能性があるということになります。

関連するQ&A

  • node.jsのシェル上で

    コンソール上でnodejsを起動してシェルとしてつかった場合 var x="グローバル変数"; console.log(x); //とするとグローバル変数と出力されます。 さらに console.log(this.x); //とするとグローバル変数と出力されます。 そもそもグローバル変数とはトップレベルコードにおけるオブジェクトのプロパティとあります。 ブラウザだと、トップレベルのスコープで定義した変数は alert(window . variable); でアクセスできます。 ですから、nodeコンソール上で xとっ宣言した変数がthis.xとトップオブジェクトとしてアクセスできることはわかったのですが これをコンソールではなく、jsファイルに描いてそれをnodeコマンドで実行した場合 ~$ node test.js といった具合に実行させた場合 どうも、undefindeと表示されてしまうのです。 これは何が原因でundefinedと出力されてしまうのでしょうか?

  • 外部ファイル操作について

    外部ファイルへの入出力のやり方についてアドバイスお願いします。 外部ファイルは 書き込み専用(Sample.txtの内容を書き込む)のファイル「Test.txt」と 書き込む内容を記載してあるファイル「Sample_01.txt」と「Sample_02.txt」の2種類を用意しておきます。 「Sample_01.txt」には 1.おはよう 2.こんにちは 3.こんばんは Sample_02.txt」には 1.いただきます 2.ごちようさま 「Test.txt」の1行目には 【Sampleテキストの内容】 という文字列をそれぞれ初めから記載しておきます。 ファイルの読み込み・書き込みにおいて、「Test.txt」に1行目(【Sampleテキストの内容】 )を消さずに読み込み・書き込みするにはどうしたらよいのでしょうか。 また、「Test.txt」に1行目に【Sampleテキストの内容】という文字列が存在するかを判定するにはどうしたらよいのですか。 お手数ですが、アドバイスお願いします。 出力はDOS画面に行います。

    • ベストアンサー
    • Java
  • JSについて教えてください。

    // FizzBuzz let i = 0; while(i < 100) { i++; if(i % 3 === 0){ console.log('Fizz'); continue; } if(i % 5 === 0){ console.log('Buzz'); continue; } if(i % 5 === 0 && i % 3 === 0){ console.log('FizzBuzz'); continue; } console.log(i); document.getElementsByClassName('js-test210')[0].innerHTML = i; } ・ 上記のように作成したのですが、 if(i % 5 === 0 && i % 3 === 0){ console.log('FizzBuzz'); continue; } の部分を一番上にもっていかないとこちらがうまくいかない理由がわかりますか? ・ continue; はこれ以下の処理は実行しないようにするという意味のようですが、 if内の記載以下の処理を実行しないようにするということなのでしょうか? ただそれだともともとそれ以下に何もないですよね???

  • strutsでエクセルファイルの操作

    お世話になります、panchoです。 strutsを使用しないサーブレット開発において、エクセルファイルの読み込み操作を過去に扱ったことがあるのですが、strutsでエクセルファイルの読み込み操作が出来るのでしょうか。 当然、エクセルファイルへの書き込みは出来たのですが、 読み込みをしているサンプルがなくて困っております。 よろしくお願いします。

    • ベストアンサー
    • Java
  • ファイル操作

    ファイル操作について、プログラムがうまくできないので教えていただきたいです。 作っているのは、txtファイルを読み込んで、置換の処理をした結果を、test.txtファイルに書き出したいのです。 質問なのですが、ここでtest.txtはあらかじめ作成しておかなければならないのでしょうか。自動で作成させる方法があれば、教えてください。 -----------------data.txt------------------------ rabbitうさぎappleりんごcoffeeコーヒー ------------------------------------------------ -----------------apple.pl----------------------- open(FILEHANDLE,"data.txt"); while($str=<FILEHANDLE>){ $str=~s/apple/青りんご/; } close(FILEHANDLE); open(FILEHANDLE,"test.txt"); print FILEHANDLE $str; close(FILEHANDLE); ------------------------------------------------- また、コマンドプロンプトの結果は次のとおりです。 C:\Perl>perl -cw apple.pl apple.pl syntax OK C:\Perl>perl apple.pl C:\Perl> Perl初心者なため、詳しく教えていただけると助かります。よろしくお願いします。

    • ベストアンサー
    • Perl
  • ファイルを処理中に次の処理に移ってしまうようなのですが、、

    VB.NETですが、 趣味でアプリケーションを作成しています。 下記のコードで処理を実行させています。 Call Shell("C:\aaa.exe c:\test.txt c:\test2.txt", AppWinStyle.Hide) (A) Dim sr As New System.IO.StreamReader("c:\test2.txt", System.Text.Encoding.Default) Dim sb As New System.Text.StringBuilder(CInt(Microsoft.VisualBasic.FileSystem.FileLen("c:\test2.txt") * 1.1)) 'ファイルの最後までループ Do Until sr.Peek = -1 sb.Append(sr.ReadLine & vbCrLf) Loop sr.Close() "aaa"はtest.txtを加工してtest2.txtとして出力するプログラムです。 その後、test2を最後まで読み出しているのですが、 どうもプログラムaaaが処理を終了する前に 次の読み出し処理に移ってしまっているようなのです。 そこで、素人なりに上記(A)の部分に For i = 0 To 2000000000 Next For i = 0 To 2000000000 Next とForループを加えて時間稼ぎしているのですが、 状況によって時間稼ぎがうまくいかない場合があります。どのように問題を回避すべきでしょうか? aaaはDLLでも組み込み可能になっているプログラム なのですがDLLで実行させると何らかのメリット があるのでしょうか? その点を教えていただけると助かります。 回答よろしくお願いいたします。

  • JSON.stringifyで変換がうまくいかない

    var json = fs.readFileSync("./json.txt", 'utf8') //txtの中身は{Aiueo:[{hoge:"hoge"}]} console.log(JSON.stringify(json)); を実行しても、{"Aiueo":[{"hoge":"hoge"}]}にならず、"{Aiueo:[{hoge:"hoge"}]}"となります。 どうすれば解決できますか?

  • ファイル操作

    コンパイラ:VisualC++6.0 ファイル操作について質問です。 書き込みは出来ますが、書き込みの追記の仕方が分かりません。(毎回上書きされる) #include<stdio.h> int main(void){ FILE* fp; char write[100]; fgets(write,sizeof(write),stdin); fp=fopen("../test.txt","w"); if(fp==NULL){ printf("エラー"); return 0; } fprintf(fp,"%s",write); fclose(fp); return 0; } よろしくお願いします。

  • テキストファイルに書き込めない(ファイルの所有者と実行者の違いか?)

    テキストファイルにログを書き込む以下の処理があります。 aaa.pl -------------------- open Log,">>aaa.txt"; print Log 'test'; close Log; Web上(アパッチ)からこのaaa.plを実行すると 正常に処理されて、aaa.txtに書き込まれます。 (aaa.txtのオーナーはwww。属性は644) それとは別に、/etc/aliasesに 特定のメールアカウントにメールが送られた時に このaaa.plが実行されるように設定しているのですが mail_address: "|/ccc/aaa.pl" (パスは適当ですが、実際にはあっています) こちらからaaa.plが処理させても、 aaa.txtに文字列が書き込まれなくて困っています。 open Log,">>aaa.txt"; chmod 666,"aaa.txt"; ... とPerl側でパーミッションを変更させようとしても うまく変更されていません。処理もされません。 おそらくaliasesに設定したPerlの実行権限者が ファイルの所有者(この場合www)と異なる為 書き込みもchmodもうまくいかないと思うのです。 aliasesで実行させるアカウントは いったいどのようなアカウントなのでしょうか(binユーザーとか?) また、これを回避するにはどのようにすればよろしいでしょうか? どなたかご存知の方、どうぞよろしくお願い致します。

    • ベストアンサー
    • Perl
  • バッチファイルのrdでログを吐きたい

    現在rdコマンドを使い、失敗した場合、成功した場合どのフォルダを削除したか、等のログを吐きたいのですが、ログが吐けません ログの吐き方をご存知の方ご教授いただければと思います フォルダ構成 -log.txt -test -rd.bat rd.batを実行すると、testフォルダが削除され、log.txtに記述されます また、rd.batはtest2を削除しようとしますが、test2というフォルダは存在しないため、エラーをlog.txtに記述します rd.batの内容 @echo off rd test /S /Q >> log.txt rd test2 /S /Q >> log.txt この状態で実行しますと、log.txtは何も書き込まれないままです echoをつけて echo rd test /S /Q >> log.txt にするとrdが実行されません どなたかご存知の方ご教授よろしくお願いいたします