[Java] 3. 버퍼와 출력스트림, 문자코드

1) 버퍼를 이용한 입/출력

1-1) 버퍼란 무엇일까?

▶버퍼란 한 곳에서 다른 곳으로 데이터를 전송할 때 일시적으로 보관하는 메모리 영역이다.

1-2) 버퍼를 왜 사용할까?

A → B 로 데이터를 전송을 하려고 하는데 B에서 다른 일을 수행하고 있다고 해보자.

▶버퍼가 없을때 : A → B

  1. A는 B의 일이 끝날때까지 기다려야 한다.

  2. 병목현상이 일어날 수 있다.

▶ 버퍼가 있을때 : A → (버퍼) → B

  1. A에서 처리된 결과가 버퍼에 저장이 된다.

  2. B의 일이 끝나면 버퍼에 저장된 결과를 받을 수 있다.

결과적으로, 전체적인 업무 속도가 향상될 것이고 손실을 방지할 수 있다.

▶ 버퍼에 담는 작업을 버퍼링이라고 한다.

▶ 실행환경이 버퍼를 가지고 있다.

▶ 버퍼는 메인메모리에 준비한다.

2) 출력스트림 FileOutputStream

2-0) 개체와 객체

▶개체 : 관련있는 속성들이 모여서 의미있는 하나의 정보 단위를 이룬 것

▶객체 : 사물을 표현하는 단위

▶개체 명은 자바 플랫폼이 준비해 놓았다.

▶클래스란 키워드로 개체를 정의한다.

Public class PSH 라고 한다면 PSH가 개체명이 된다.

2-1) 출력 스트림을 이용한 비동기 처리

FileOutputStream fout = new FileOutputStream();

▶FileOutputStream은 개체, fout은 객체이름이다.

▶ fout의 이름을 가진 출력스트림을 생성해준다. (출력버퍼 생성)

방법 1.
FileOutputStream fout = new FileOutputStream("C:\workspace\Java\src\psh94.txt");

방법 2.
File file = new file("C:\workspace\Java\src\psh94.txt");
FileOutputStream fout = new FileOutputStream(file);

▶write(); 함수로 버퍼에 쓰기를 처리한다.

fout.write();

▶쓰기를 수행한 후 버퍼에 담긴 것을 파일로 써준다. (버퍼를 비워준다.)

fout.flush();

▶버퍼를 닫아준다.

fout.close();

2-2) Package

▶ 클래스가 많아지면 클래스명, 파일명이 같아질 수 있다.

▶ 패키지명도 같을 수 있으므로 도메인을 등록해 사용할 수 있다.

ex) PSH.com 처럼 등록해 사용할 수 있다.
위와 같은 도메인을 등록해 사용한다면 패키지 명은 com.PSH.ex1과 같이 될 수 있다.

▶만약 패키지 안에 있는 Game.class를 사용하는 game을 만들고 싶다면

com.PSH.ex1.Game game = new com.PSH.Game();

을 써주면 되지만 너무 길다고 생각할 수 있다. 그럴때는 아래와 같이 해주면 된다.

import com.PSH.ex1.Game;

public class Program{
.
.
.
Game game;

▶ 해당 패키지를 모두 불러오고 싶을 때에는 패키지 뒤에 *을 붙여준다.

ex) import com.PSH.ex1.* ;

▶패키지 명에 java를 쓰지 않도록 한다.

3) 문자코드

3-0) fout.write(65)를 입력하면 'A'가 출력된다 ?

▶입력한 값이 버퍼에 들어갈 때에는 키코드로 들어간다.

3-1) ASCII, UNICODE

▶기본은 ASCII(아스키)코드

▶ ASCII + KR + ... = EUC-KR

▶ ASCII + KR + JP + ... + CN = UNICODE

▶ ACSII 코드 이후 번호가 달라지는 문제때문에 EUC-KR 거의 쓰지 않게 됨

4) 문자와 문자열

4-1) 문자열

▶'H','E','L','L','O'

  1. 'H','E','L','L','O'는 하나의 문자열이 아님

  2. 0을 구분자로 넣어주자

  3. 'H','E','L','L','O',0 은 하나의 문자열

  4. 'H','E','L','L','O',0 →"HELLO"

▶'H','E','L','L','O',0,'H','I',0,'H','I',0

4-2) 문자열 출력

System.out.write(65);
System.out.write(66);
System.out.write(67);
System.out.write(68);
System.out.write(69);
System.out.flush();

▶ "ABCDE"가 출력된다

System.out.print("Hello"); 입력 시, "Hello"가 출력 된다.

5) ESCAPE 문자

▶ 아래 코드 작성 시, 다음과 같이 출력된다.

"HELLO I'm PSH".

System.out.print("Hello");
System.out.print("I'm");
System.out.print("PSH");

▶다음과 같이 출력하고 싶다면 ESCAPE 문자를 붙여준다.

"Hello"
"I'm"
"PSH"

System.out.print("Hello\n");
System.out.print("I'm\n");
System.out.print("PSH\n");

▶ESCAPE 문자표

6) 숫자 출력

▶System.out.print는 입력값 그대로를 출력한다.

System.out.print("I'm HAPPY"); →"I'm HAPPY"

▶System.out.printf는 숫자나 문자를 출력할 수 있다.

System.out.printf("총점 : %d", TOTAL); →TOTAL이 60이라면 "총점 : 60"

▶포맷 문자열과 형식 지정자

좋은 웹페이지 즐겨찾기