Coding/Reference

[JavaScript] 입출력

성으니:) 2021. 9. 10. 06:31

 

입력

 

1. readline 모듈

처음 생성 시 createInterface를 통해 input, output을 설정해준다.

다음에, 입력을 갖고 처리할 callback함수인 function(line)을 설정해준다.

기본적으로 매개변수 line에 할당되는 것이 입력값이며, 문자열로 할당된다.

const readline = require('readline');
const rl = readline.createInterface({
  input: process.stdin,
  output: process.stdout
});

let input = [];

rl.on('line', function (line) {
    // 입력 처리
    //input = line.split(' ').map((el) => parseInt(el)); 
  })
  .on('close', function () {
    // 출력
    //console.log();
    process.exit();
  });

 

 

2. fs 모듈

fs 모듈은 FileSystem의 약자로 파일 처리와 관련된 모듈이다.

  2-1) readFile()

        filename의 파일을 [options]의 방식으로 읽은 후 callback으로 전달된 함수를 호출한다. (비동기적)

fs.readFile(filename, [options], callback)

 

  2-2) readFileSync()

        filename의 파일을 [options]의 방식으로 읽은 후 문자열을 반환한다. (동기적)

fs.readFileSync(filename, [options])

 

Sync가 붙은 것은 동기적 읽기, 붙지 않은 것은 비동기적 읽기이다.
동기적 읽기로 읽게 되면 파일을 읽으면서 다른 작업을 동시에 할 수 없다.
하지만 비동기적으로 읽으면 파일을 읽으면서 다른 작업도 동시에 수행할 수 있고,
파일을 다 읽으면 매개변수 callback으로 전달한 함수가 호출된다.

[options]에는 보통 인코딩 방식이 오게 되며 웹에서는 utf8을 주로 사용한다.

 

 

// 문자 하나만 입력받을 경우
let input = require("fs").readFileSync("/dev/stdin").toString()

//숫자로 변환
let num = Number(input)

// 한칸 띄어쓰기로 구분
// input[0], input[1] 배열에서 꺼내쓰면 된다.
let input = require("fs").readFileSync("/dev/stdin").toString().split(" ")

// 줄바꿈으로 구분
let input = require("fs").readFileSync("/dev/stdin").toString().split("\n")
let count = input[0];
let numbers = [];

for (let i = 1; i < input.length; i++) {
  if (input[i] !== '') {
    numbers.push(input[i].split(' '));
  }
}

for (let i = 0; i < numbers.length; i++){
  let num1 = Number(numbers[i][0]);
  let num2 = Number(numbers[i][1]);

  //console.log(num1 + num2);
}

 

 

 

 

출력

 

console.log()

 

 

 

 

[출처] 

https://velog.io/@hjkdw95/%EB%B0%B1%EC%A4%80-Node.js-%EC%9E%85%EC%B6%9C%EB%A0%A5-%EC%A0%95%EB%A6%AC

https://velog.io/@exploit017/%EB%B0%B1%EC%A4%80Node.js-Node.js-%EC%9E%85%EB%A0%A5-%EB%B0%9B%EA%B8%B0