0

a_b_c_d.txt と e_f_g_h.png の 2 つのファイルがあるとします S, 実行時、つまり、コマンド プロンプトを使用して、a.txt 内の d フォルダー内の c フォルダー内に b フォルダーを作成し、別のファイル f-> についても同様に作成する必要があります。 g->h->e.png と、 a にテキスト、 epng に画像があります。.したがって、これらの既存のファイルから作成されたファイルに値を取得するにはどうすればよいですか。.

4

2 に答える 2

1

You can find all the file system operations inside the fs module. http://nodejs.org/api/fs.html

But like tapan says if you need to do complex synchronous execution that manipulates the file system something like Bash will be a lot better suited for that.

于 2012-05-18T10:04:34.400 に答える
0

したがって、あなたが正しく理解している場合は、「a_b_c_d.txt」という名前のファイルをいくつかのフォルダーに取り、それを次のようにネストされたフォルダーに移動します。

    ./a_b_c_d.txt -> ./b/c/d/a.txt

一般的な解決策は次のとおりです。

  1. ファイル名process.argvが異なる場合は、を使用してファイル名を取得します。たとえば、ノードへの引数としてファイルを指定すると node move.js "a_b_c_d.txt"、引数「a_b_c_d.txt」が argv 配列になります。
  2. 文字列メソッドと配列メソッドの組み合わせを使用してファイル名を処理します。
    • ノードの現在のディレクトリは、__dirname必要に応じてグローバル変数に格納されます。
    • split(...)文字列のメソッドを使用して、拡張子を残りのパスから分割できます。上記の引数の場合、split('.')結果は配列になります['a_b_c_d', 'txt']
    • 'a_b_c_d'次に、 を使用して分割し'_'、さまざまな配列操作を使用してファイル名を配列から引き出すことができる'a' ため、パス['b', 'c', 'd'] とファイル名と拡張子が独自の変数のどこかに置かれます。
  3. パス配列で使用fs.mkdirSync(...)して、ネストされた各フォルダーを作成しますb(たとえば、配列のforEach(...)メソッドを使用)。asyncfs.mkdir(...)および supply コールバックを使用することもできますが、この場合は同期バージョンの方が簡単です。
  4. 最後に を使用fs.renameSync(...)して に移動./a_b_c_d.txt./b/c/d/a.txtます。

ご覧のとおり、このユースケースでは python または bash (tapan の提案による) の方がおそらく簡単ですが、何らかの理由でノードを使用する必要ある場合は、上記のアドバイスで十分に開始できることを願っています。

于 2012-05-19T14:25:44.420 に答える