2012-06-02 23 views
17

Bir dosya satırını satır okumak için javascript kullanmamıştım ve phantomjs benim için tamamen yeni bir ballgame. fantomda read() işlevinin olduğunu biliyorum, ancak verileri bir değişkene sakladıktan sonra nasıl manipüle edeceğimi tamamen bilmiyorum. Benim yalancı kod gibi bir şey: Bir kimse gerçek kod sözdizimi ile lütfen bana yardımcı olsaydıphantomjs javascript yerel bir dosya hattını satır satır oku

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

    //do stuff here with the line 

} 

, ben phantomjs tipik javascript veya ne kabul edip etmeyeceğini olarak biraz karıştı.

cevap

27

Ben JavaScript veya PhantomJS uzman ancak aşağıdaki kod benim için çalışıyor değilim: Burada, çok geç olsa da

/*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

ne denedim ve çalışıyor:

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

Bir sonraki işlem için tüm dosya gerekiyorsa bu iyi olur. Aksi takdirde, tüm dosyayı (özellikle giriş dosyası büyük olduğunda) okumak iyi bir fikir değildir. –

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

Burada yerleşik IMORLine() işlevini kullandığı için daha iyi bir yanıt, IMO; özel bir şey yapmaya gerek yok. –

+2

Anlaştık, bu daha iyi bir cevap. Yine de, file_h.atEnd() işlevini döngü koşuluna göre kullanmak için cevabı ayarlamanızı öneririm. Bkz. Http://phantomjs.org/api/stream/method/read-line.html –

+1

Bu sürümü denedim ancak readLine() yönteminin kullanımdan kaldırıldığı anlaşılıyor: https://nodejs.org/api/fs.html# fs_fs_open_path_flags_mode_callback – alemol