Чтение всех файлов в каталоге с помощью NodeJS [duplicate]

Исключение нулевого указателя - это индикатор того, что вы используете объект, не инициализируя его.

Например, ниже - класс ученика, который будет использовать его в нашем коде.

public class Student {

    private int id;

    public int getId() {
        return this.id;
    }

    public setId(int newId) {
        this.id = newId;
    }
}

Приведенный ниже код дает вам исключение с нулевым указателем.

public class School {

    Student obj_Student;

    public School() {
        try {
            obj_Student.getId();
        }
        catch(Exception e) {
            System.out.println("Null Pointer ");
        }
    }
}

Поскольку вы используете Obj_Student, но вы забыли инициализировать его, как в правильном коде, показанном ниже:

public class School {

    Student obj_Student;

    public School() {
        try {
            obj_Student = new Student();
            obj_Student.setId(12);
            obj_Student.getId();
        }
        catch(Exception e) {
            System.out.println("Null Pointer ");
        }
    }
}
204
задан aarosil 9 October 2014 в 04:23
поделиться

6 ответов

Из docs:

Если кодировка не указана, возвращается исходный буфер.

объясните <Buffer ...>. Укажите допустимую кодировку, например utf-8, в качестве второго параметра после имени файла. Например,

fs.readFile("test.txt", "utf8", function(err, data) {...});
284
ответ дан Tomáš Zato 18 August 2018 в 10:02
поделиться

Он возвращает объект Buffer.

Если вы хотите его в строке, вы можете преобразовать его с помощью data.toString():

var fs = require("fs");

fs.readFile("test.txt", function (err, data) {
    if (err) throw err;
    console.log(data.toString());
});
24
ответ дан Andz 18 August 2018 в 10:02
поделиться
  • 1
    Вид старого, но должно быть известно, что это решение вводит дополнительные накладные расходы, поскольку buffer.toString() предполагает кодировку utf-8 в любом случае. Таким образом, это было бы эквивалентно (хотя и медленнее, чем) ответ @hvgotcodes. – Brandon 23 July 2013 в 22:15

Переменная data содержит объект Buffer. Преобразуйте его в кодировку ASCII, используя следующий синтаксис:

data.toString('ascii', 0, data.length)

Асинхронно:

fs.readFile('test.txt', 'utf8', function (error, data) {
    if (error) throw error;
    console.log(data.toString());
});
10
ответ дан ayusha 18 August 2018 в 10:02
поделиться

Это очень важно для Google, поэтому я хотел бы добавить некоторую контекстную информацию об исходном вопросе (выделение мое):

Почему делает узел. js 'fs.readFile () возвращает буфер вместо строки?

Поскольку файлы не всегда являются текстовыми

Даже если вы как программист знает это: Узел не знает, что находится в файле, который вы пытаетесь прочитать. Это может быть текстовый файл, но он может быть также ZIP-архивом или JPG-изображением. Node не знает.

Поскольку чтение текстовых файлов сложно

Даже если Узел знал, что он должен был читать текстовый файл, он до сих пор не знал, какая кодировка символов используется (то есть, как байты в карте файла соответствуют человеко-читаемым символам) потому что сама кодировка символов не сохраняется в файле.

Существуют способы угадать кодировку символов текстовых файлов с большей или меньшей уверенностью (это обычно делают редакторы), но вы, как правило, не хотите, чтобы ваш код полагался на догадки.

Буферы на помощь!

Итак, поскольку он не знает и не может знать все эти детали, узел просто читает файл байта для байта, не предполагая ничего о его содержимом.

Вот что такое возвращаемый буфер: unopinionated container для raw двоичного содержимого. Как это содержание следует интерпретировать, зависит от вас как разработчика.

4
ответ дан Loilo 18 August 2018 в 10:02
поделиться

try

fs.readFile("test.txt", "utf8", function(err, data) {...});

в основном вам нужно указать кодировку.

135
ответ дан Nick 18 August 2018 в 10:02
поделиться

Async:

fs.readFile('test.txt', 'utf8', callback);

Синхронизация:

var content = fs.readFileSync('test.txt', 'utf8');
22
ответ дан wangchi 18 August 2018 в 10:02
поделиться
Другие вопросы по тегам:

Похожие вопросы: