2012-06-02 16 views
17

द्वारा स्थानीय फ़ाइल लाइन को पढ़ा है मैंने कभी भी लाइन लाइन फ़ाइल को पढ़ने के लिए जावास्क्रिप्ट का उपयोग नहीं किया है, और phantomjs मेरे लिए एक नया नया ballgame है। मुझे पता है कि प्रेत में एक पठन() फ़ंक्शन है, लेकिन मुझे पूरी तरह से यह सुनिश्चित नहीं है कि इसे एक चर में संग्रहीत करने के बाद डेटा को कैसे छेड़छाड़ की जाए। मेरे स्यूडोकोड की तरह कुछ है:phantomjs जावास्क्रिप्ट लाइन

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

    //do stuff here with the line 

} 

अगर कोई मुझे वास्तविक कोड वाक्य रचना के साथ मदद कराएं, तो मैं थोड़ा के लिए किया जाए या नहीं phantomjs ठेठ जावास्क्रिप्ट या क्या स्वीकार कर लेंगे संदेह में हूँ।

उत्तर

27

मैं नहीं जावास्क्रिप्ट या 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

यहां बेहतर उत्तर, आईएमओ, क्योंकि यह अंतर्निहित 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

संबंधित मुद्दे