2012-03-27 7 views
38

nodejsでtest.txtをロードしたい。nodejsロードファイル

var fs = require('fs'); 
fs.readFile('./test.txt', function (err, data) { 
    if (err) { 
    throw err; 
    } 
    console.log(data); 
}); 

サーバーのパスはC:\server\test\server.jsです。現在の作業に比較的解決され、それは同じディレクトリにある場合だけノードでこの

fs.readFile(__dirname+'/foo.txt',function(e,d){console.log(d)}) 

答えて

57

パスを行うので、Error: ENOENT, no such file or directory 'C:\Users\User\test.txt'

+0

ありがとう、今すぐ動作します –

+0

私は 'ReferenceError:__dirname is not defined'を取得しています。それは私が手動で 'var __dirname = '/ the path /''を定義する必要があるからですか? – myfirsttime1

+1

@ myfirsttime1 '__dirname'は、REPLではなくNodeスクリプトでのみ動作します。 –

0

:test.txtのは、同じディレクトリにあるが、私はこのエラーを取得していますディレクトリ。ノードスクリプトの場所へのパスを解決するには、パスを__dirnameの前に付けます。

に位置していますが、代わりに、現在の作業ディレクトリのディレクトリ名 にファイルを取得するために__dirnameを使用する必要があります
var fs = require('fs'); 
fs.readFile(__dirname + '/test.txt', function (err, data) { 
    if (err) { 
    throw err; 
    } 
    console.log(data.toString()); 
}); 
+2

それは明らかに動作しませんので、私は、downvoted。 –

+0

ロブそれは完全に行います..ノード端末でちょうどしました – samccone

+2

'/ tmp/x/x.js'に' x.js'を作成してください。 OPsコードを入れてください。 '/ tmp/x/test.txt'も作成します。さて、あなたの作業ディレクトリを '/ tmp'(例えば' cd/tmp')に設定し、 'node x/x.js'や' node/tmp/x/x.js' - > 'Error:ENOENT、そのようなファイルやディレクトリはありません 'test.txt'' –

6

fs.readFile(__dirname + "/test.txt", ...); 
5

ノード0.12で、それは同期今これを実行することが可能です。

var fs = require('fs'); 
    var path = require('path'); 

    // Buffer mydata 
    var BUFFER = bufferFile('../test.txt'); 

    function bufferFile(relPath) { 
    return fs.readFileSync(path.join(__dirname, relPath)); // zzzz.... 
    } 

fsはファイルシステムです。 readFileSync()は、要求した場合はBufferまたは文字列を返します。

fsは、相対パスがセキュリティの問題であると正しく仮定しています。 pathは回避策です。

return fs.readFileSync(path,{ encoding: 'utf8' }); 
0

それは同じディレクトリにならそれが動作するはず:、文字列として読み込むエンコーディングを指定する

。私は、ファイルに、同じコードでテストしているname.txt、それがうまく働いています:

var fs = require('fs'); 
fs.readFile('./test.txt', function (err, data) { 
    if (err) { 
    throw err; 
    } 
    console.log(data.toString()); 
}); 
関連する問題