2016-01-10 3 views
1

Вот мой текстовый файл -чтение из файла с node.js

15,13,12 
10 
10 

и вот файл в .js

var fs = require("fs"); 
var data = fs.readFileSync("someNumbers.txt", "utf8"); 

for(var i=0; i<data.length; i++){ 
    console.log(i + ": " + data[i] + ": " + typeof data[i]); 
} 

наконец вот выход:

0: 1: string 
1: 5: string 
2: ,: string 
3: 1: string 
4: 3: string 
5: ,: string 
6: 1: string 
7: 2: string 
8: ,: string 
: string 
10: 
: string 
11: 1: string 
12: 0: string 
: string 
14: 
: string 
15: 1: string 
16: 0: string 

Я не» t понять, что происходит с выходом после того, как я доберусь до 9; Буду благодарен за объяснение. Gerard

ответ

1

Возможно, вы столкнулись с проблемами при попытке включить возврат каретки и/или перевода строки из исходного файла в строку, а затем отправить эту строку в console.log(). Измените код, чтобы поставить шестнадцатеричное значение вместо фактического значения и ваш вопрос должен прояснить:

var fs = require("fs"); 
var data = fs.readFileSync("someNumbers.txt", "utf8"); 

for(var i=0; i<data.length; i++){ 
    console.log(i + ": " + data.charCodeAt(i).toString(16). + ": " + typeof data[i]); 
} 

Или просто пропустить любые непечатаемые символы:

var fs = require("fs"); 
var data = fs.readFileSync("someNumbers.txt", "utf8"); 

for (var i=0; i<data.length; i++){ 
    var ch = data.charCodeAt(i); 
    if (ch > 32 && ch <= 127) { 
     console.log(i + ": " + ch + ": " + typeof ch); 
    } 
} 

Примечание, когда вы читаете файл и сказал ему интерпретировать его как utf8, вы уже делаете это так, чтобы каждый элемент в этих данных обрабатывался как строка, действительно ли это или нет. Вы уже сказали Javascript, чтобы сделать все строкой.

1

Он читает символ конца строки (новой строки), который не может быть отображен. Этот символ смешивается с соответствующими строками вывода console.log.

Смежные вопросы