2012-06-02 11 views
17

ファイルを行単位で読むのにJavaScriptを使用したことはありません。phantomjsはまったく新しいボールゲームです。私はファントムにread()関数があることを知っていますが、データを変数に格納した後にデータを操作する方法が完全にはわかりません。誰もが私はphantomjsは、典型的なjavascriptや何を受け入れるか否かを少し困惑している、実際のコードの構文で私を助けてくださいできればphantomjs javascriptローカルファイルを行単位で読み込みます

filedata = read('test.txt'); 
newdata = split(filedata, "\n"); 
foreach(newdata as nd) { 

    //do stuff here with the line 

} 

:私の擬似コードのようなものです。

答えて

27

私はJavaScriptやPhantomJS専門家ではないが、次のコードは、私の作品:

/*jslint indent: 4*/ 
/*globals document, phantom*/ 
'use strict'; 

var fs = require('fs'), 
    system = require('system'); 

if (system.args.length < 2) { 
    console.log("Usage: readFile.js FILE"); 
    phantom.exit(1); 
} 

var content = '', 
    f = null, 
    lines = null, 
    eol = system.os.name == 'windows' ? "\r\n" : "\n"; 

try { 
    f = fs.open(system.args[1], "r"); 
    content = f.read(); 
} catch (e) { 
    console.log(e); 
} 

if (f) { 
    f.close(); 
} 

if (content) { 
    lines = content.split(eol); 
    for (var i = 0, len = lines.length; i < len; i++) { 
     console.log(lines[i]); 
    } 
} 

phantom.exit(); 
5

遅すぎる、ここに私が試してみましたと働いているものですが:

var fs = require('fs'), 
    filedata = fs.read('test.txt'), // read the file into a single string 
    arrdata = filedata.split(/[\r\n]/); // split the string on newline and store in array 

// iterate through array 
for(var i=0; i < arrdata.length; i++) { 

    // show each line 
    console.log("** " + arrdata[i]); 

    //do stuff here with the line 
} 

phantom.exit(); 
+0

次の処理にファイル全体が必要な場合は、これが有効です。それ以外の場合は、ファイル全体を読むのは良い考えではありません(特に入力ファイルが大きい場合) –

21
var fs = require('fs'); 
var file_h = fs.open('rim_details.csv', 'r'); 
var line = file_h.readLine(); 

while(line) { 
    console.log(line); 
    line = file_h.readLine(); 
} 

file_h.close(); 
+0

IMOは組み込みのreadLine()関数を使用しているので、より良い答えです。カスタムを何もする必要はありません。 –

+2

合意しました。これが良い答えです。私は、ループの条件として、file_h.atEnd()を使用する答えを調整することをお勧めします。 http://phantomjs.org/api/stream/method/read-line.html –

+1

を参照してください。このバージョンを試しましたが、readLine()メソッドは廃止されているようです:https://nodejs.org/api/fs.html# fs_fs_open_path_flags_mode_callback – alemol

関連する問題