티스토리 뷰

시리즈/Javascript

javascript 콘솔 입출력

빅또리 2021. 1. 21. 20:52

(1) 출력

 

console.log( )

 

 

 

 

(2) 입력 : readline 모듈 이용하는 방법

 

const readline = require('readline');
const rl = readline.createInterface(process.stdin, process.stdout);

let input = [];

let eval = () => {

    //   Code
     
}

rl.on('line', function(line){
    input.push(line);
}).on('close', eval);

 

readline 모듈

Readable 스트림으로부터 한 줄씩 읽어 들이는 인터페이스를 제공하는 모듈.

 

The readline module provides an interface for reading data from a Readable stream (such as process.stdin) one line at a time.

 

 

인터페이스 생성 ( createInterface )

2번째 줄 코드는 표준 입출력(키보드, 터미널 화면) 관련된 readline 인터페이스를 생성한다.

 

Instances of the readline.Interface class are constructed using the readline.createInterface() method. 

Every instance is associated with a single input Readable stream and a single output Writable stream.

 

 

rl.on( '이벤트' , callback )

해당 이벤트 발생시 callback 함수를 호출한다.

 

- line 이벤트

한 줄씩 input 배열에 넣는다. 

 

The 'line' event is emitted whenever the input stream receives an end-of-line input (\n, \r, or \r\n). This usually occurs when the user presses Enter or Return

 

- close 이벤트

readline 인터페이스가 한 번 생성되고 나면 이 인터페이스가 종료되기 전까지는 node 프로그램이 종료되지 않는다.

(계속 입력 기다림). 따라서 끝내려면 반드시 close 이벤트가 발생돼야 한다.

 

close 이벤트가 발생하는 경우

 

※ 콘솔에서 실행시 ctrl + c를 눌러서 close 이벤트를 발생시켜야 끝난다. 

백준에서 같이 파일로 입력을 받을 경우는 파일 끝에 가면 EOF에 걸려 자동으로 close 이벤트가 발생한다.

 

 

 

 

(3) 입력 : File system 모듈 이용하는 방법

 

나는 백준에서 문제 풀때 readline 모듈 방식만 쓰는데 찾다 보니까 이 방법도 있더라. (근데 window라 안됨)

 

 

let fs = require('fs');
let input = fs.readFileSync('/dev/stdin').toString().split(' ');



//fs.readFile(path[, options], callback)      비동기
//fs.readFileSync(path[, options])            동기

 

 

readFile VS readFileSync

기본적으로 파일에서 데이터를 읽는 메소드이다.

 

readFile : 비동기 방식. 파일 다 읽기 전에 다음 코드 실행하고, 다 읽었으면 등록한 callback 함수 실행

readFileSync : 동기 방식. 파일 다 읽은 후에 다음 줄 코드 실행.

 

 

파라미터

path : 파일명이나 파일 디스크립터.

 

유닉스 계열에서는 (리눅스, 맥) 표준 스트림 특수파일인 '/dev/stdin' '/dev/stdout'  '/dev/stderr'가 있어서 이 방식으로 키보드 입력을 받으면 된다는데... 윈도우에서는 안된다! 

 

options : encoding (예를 들면 'utf8') , flags (예를 들면 'r')

callback 함수 : 비동기 방식의 경우.

 

 

 

 

 

영어 설명 출처 : https://nodejs.org/api/readline.html

 

'시리즈 > Javascript' 카테고리의 다른 글

정규표현식 예제  (0) 2021.02.20
Map and Set  (0) 2021.02.20
String.prototype.replace() 함수  (0) 2021.01.22
javascript 팁  (0) 2021.01.21
[queue] javascript 효율적인 큐  (0) 2021.01.13
댓글
공지사항
최근에 올라온 글