Мне нужно передать текстовый файл в терминал, а затем прочитать из него данные, как я могу это сделать?
node server.js file.txt
Как мне пройти путь от терминала, как мне прочитать это на другой стороне?
javascript
node.js
маскарадный
источник
источник
Ответы:
Вы захотите использовать
process.argv
массив для доступа к аргументам командной строки, чтобы получить имя файла и модуль FileSystem (fs) для чтения файла. Например:Чтобы немного разбить это, у вас
process.argv
обычно будет длина два, нулевой элемент - это интерпретатор «узла», а первый - это сценарий, который в настоящее время выполняется узлом, элементы после этого передавались в командной строке. Как только вы вытащили имя файла из argv, вы можете использовать функции файловой системы для чтения файла и делать с его содержимым все, что захотите. Пример использования будет выглядеть так:[Edit] Как упоминает @wtfcoder, использование
fs.readFile()
метода " " может быть не лучшей идеей, потому что он буферизует все содержимое файла перед передачей его функции обратного вызова. Эта буферизация потенциально может использовать много памяти, но, что более важно, она не использует одну из основных функций node.js - асинхронный, равномерный ввод-вывод."Узловой" способ обработки большого файла (или любого другого файла на самом деле) будет заключаться в использовании
fs.read()
и обработке каждого доступного фрагмента, поскольку он доступен из операционной системы. Однако чтение файла как такового требует от вас выполнения собственного (возможно) инкрементного синтаксического анализа / обработки файла, и некоторое количество буферизации может оказаться неизбежным.источник
var lines = data.split(/\r?\n/);
, тогда в массиве "строк" будет каждая строка.Используйте fs с node.
источник
IMHO,
fs.readFile()
следует избегать, потому что он загружает ВСЕ файл в память и не будет вызывать обратный вызов, пока весь файл не будет прочитан.Самый простой способ прочитать текстовый файл - прочитать его построчно. Я рекомендую BufferedReader :
Для сложных структур данных, таких как файлы .properties или json, вам необходимо использовать синтаксический анализатор (внутри он также должен использовать буферизованный считыватель).
источник
fs.readFile()
илиfs.readFileSync()
. Это должен быть огромный файл, чтобы вызвать заметное ожидание. Файл конфигурации JSON, такой как package.json, скорее всего, будет меньше 1 КБ, так что вы можете простоfs.readFile()
иJSON.parse()
это.Вы можете использовать поток чтения и конвейер, чтобы читать файл построчно, не считывая весь файл в память за один раз.
источник
Я публикую полный пример, который наконец-то заработал. Здесь я читаю файл
rooms/rooms.txt
из скриптаrooms/rooms.js
источник