home
자바
home

03-FileIO

파일 입출력 (File I/O)

IO = Input, Output

프로그램 기준으로 파일이 입력되거나 출력되는 처리

파일 입력 (=read)

프로그램이 해당 파일을 읽어들여서 그 내용을 자신의 변수에 저장한다.

파일 출력 (=write)

프로그램이 자신이 갖고 있는 변수의 내용을 외부 파일로 저장한다.

동기(Synchoronous)처리

프로그램의 각 구문이 순차적으로 실행되는 형태.

예시

프로그램의 각 구문 : 커피를 주문하기 위한 손님.
실행 : 점원이 한명만 있는 상태에서 주문한 커피가 나오는 것.
10명의 손님이 커피를 주문하고 일렬로 대기하면 커피는 주문 순서대로 나올 것이다. 손님이 주문한 커피를 만드는데 5분의 시간이 걸린다면 3번째 손님은 15분 이후에나 받을 수 있다.
한명의 점원이 만들고 커피를 줄 때는 앞의 손님에게 건내면 된다.
| 건낸다 = return
function 커피만들기() { // ... 결과를 리턴하기까지 5분이 소요됨 return 결과값; } const 손님1 = foo(); // 5분 const 손님2 = foo(); // 10분 const 손님3 = foo(); // 15분
Plain Text
복사

비동기(Asynchronous)

프로그램의 각 구문이 순서를 무시하고 동시 다발적으로 실행되는 형태.

예시

프로그램의 각 구문 : 커피를 주문하기 위한 손님.
실행 : 점원이 여러명(5명으로 가정) 있는 상태에서 주문한 커피가 나오는 것.
10명의 손님이 커피를 주문하고 일렬로 대기하면 커피는 5명의 점원이 각자 만들어서 빨리 완료되는 순으로 나올것이다. 만약 5번째 손님이 주문한 커피를 만드는데 15분의 시간이 걸리더라도 이전 손님의 커피를 완료한 점원이 있다면 그 점원이 6번째 손님의 커피를 만들 것이다.
여러명의 손님의 커피를 동시에 제작하면 완료된 것이 어느 손님의 커피인지 알기 위해 진동벨이 필요하다.
| 진동벨 = callback
function 커피만들기() { // 처리하는데 5분이 소요 } // 5초의 대기시간 + foo의 실행시간 5초가 소요됨 setTimeout(커피만들기, 5000); // timer 처리가 비동기이므로 이 코드는 foo의 실행여부와 상관 없이 즉시 실행된다. const k = 100;
Plain Text
복사

파일 퍼미션(permission)

파일에 대한 접근 권한.
브라우저에서 구동하는 js는 불특정 다수에게 실행되어야 하는 파일이므로 특정 환경에 종속적인 코드는 지양하게 된다.
백엔드 시스템의 경우 특정 컴퓨터상에서 구동하게 되면 불특정 다수가 그 시스템에 접속하는 형태이기 때문에 다양한 환경에 맞추지 않더라도 영향이 없다.
주로 백엔드 시스템은 고사양의 컴퓨터에 일반 개인 사용자용이 아닌 다중 접속을 허용하는 기능을 갖는 운영체제를 설치하고 그 환경에 최적화된 형태로 개발된다.(일반적으로 리눅스 환경)
대부분의 backend 환경은 리눅스 상에서 구동된다는 전제를 갖는 경우가 많다.

리눅스의 사용자 구분에 따른 파일 권한 설정

자기자신
자신이 속한 그룹
그 밖의 사용자
내가 만든 파일에 대해 나 이외의 사용자가 읽기(4),쓰기(2),실행(1)을 할 수 있는지 여부를 설정할 수 있다. 이를 파일 퍼미션이라고 한다.
ex) 나는 모든 권한, 그룹은 읽기+쓰기, 그 밖의 사용자는 실행만 허가할 경우 : chmod 761 파일이름
node의 fs모듈이 갖는 chmodSync() 함수는 리눅스의 chmod 명령을 호출한다.

소스파일

03-FileIO.zip
278.9KB