相关疑难解决方法(0)

node.js:stdin的readSync?

是否可以从node.js中的stdin同步读取?因为我正在用JavaScript编写一个关于JavaScript编译器的脑筋(只是为了好玩).Brainfuck支持需要同步实现的读取操作.

我试过这个:

const fs = require('fs');
var c = fs.readSync(0,1,null,'utf-8');
console.log('character: '+c+' ('+c.charCodeAt(0)+')');
Run Code Online (Sandbox Code Playgroud)

但这只产生这个输出:

fs:189
  var r = binding.read(fd, buffer, offset, length, position);
              ^
Error: EAGAIN, Resource temporarily unavailable
    at Object.readSync (fs:189:19)
    at Object.<anonymous> (/home/.../stdin.js:3:12)
    at Module._compile (module:426:23)
    at Module._loadScriptSync (module:436:8)
    at Module.loadSync (module:306:10)
    at Object.runMain (module:490:22)
    at node.js:254:10
Run Code Online (Sandbox Code Playgroud)

stdin synchronous node.js

51
推荐指数
9
解决办法
4万
查看次数

从Node.js中的文件同步读取行

我需要使用Node.js以下列格式逐行解析文件:

13
13
0 5
4 3
0 1
9 12
6 4
5 4
0 2
11 12
9 10
0 6
7 8
9 11
5 3
Run Code Online (Sandbox Code Playgroud)

它代表一个图表.前两行是边和顶点的数量,后面是边.

我可以通过以下方式完成任务:

var fs = require('fs');
var readline = require('readline');
var read_stream = fs.createReadStream(filename);
var rl = readline.createInterface({
    input: read_stream
});
var c = 0;
var vertexes_number;
var edges_number;
var edges = [];
rl.on('line', function(line){
    if (c==0) {
        vertexes_number = parseInt(line);
    } else if (c==1) {
        edges_number = parseInt(line);
    } else …
Run Code Online (Sandbox Code Playgroud)

javascript node.js

26
推荐指数
2
解决办法
3万
查看次数

nodejs同步逐行读取大文件?

我有一个大文件(utf8).我知道fs.createReadStream可以创建流来读取大文件,但不能同步.所以我尝试使用fs.readSync,但读取文本就像打破了"??".

var fs = require('fs');
var util = require('util');
var textPath = __dirname + '/people-daily.txt';   
var fd = fs.openSync(textPath, "r");
var text = fs.readSync(fd, 4, 0, "utf8");
console.log(util.inspect(text, true, null));
Run Code Online (Sandbox Code Playgroud)

javascript filesystems node.js mojibake

9
推荐指数
3
解决办法
9491
查看次数

Node.js - promisify readline

正如标题所述,我想知道是否可以在 node.js 中使用promisifyhttps://nodejs.org/dist/latest-v8.x/docs/api/util.html#util_util_promisify_originalreadline?我只能这样做:

let data = [];
const parse = () => {
    return new Promise((resolve, reject) => {

        const rl = readline.createInterface({
            input: fs.createReadStream(path)
        });

        rl.on('line', (line) => {
            data.push(line);
        });

        rl.on('close', () => {
            resolve(data);
        });
    });
};
Run Code Online (Sandbox Code Playgroud)

javascript node.js promise

4
推荐指数
3
解决办法
3188
查看次数

NodeJS ReadLine - 仅读取前两行

我试图在NodeJS中创建一个脚本,它返回文本文件的前两行.

我目前正在使用此代码:

// content of index.js
const fs = require('fs')
const readline = require('readline');
const http = require('http')  
const port = 8080
String.prototype.beginsWith = function (string) {
    return(this.indexOf(string) === 0);
};
const requestHandler = (request, response) => {  

  console.log(request.url)
  if (request.url == "/newlines") {
      filename = "allnames.txt"
      readline.createInterface({
            input: fs.createReadStream(filename),
            output: process.stdout
    })

      response.end('Hello Node.js Server!')
  }
  else {
      response.end('Go away!')
  }

}

const server = http.createServer(requestHandler)

server.listen(port, (err) => {  
  if (err) {
    return console.log('something bad happened', err)
  } …
Run Code Online (Sandbox Code Playgroud)

node.js

2
推荐指数
2
解决办法
7209
查看次数