Scanner 클래스

: 형식이 있는 입력을 토큰으로 쪼개고 각각의 토큰을 자료형에 따라 변환한다. 스캐너는 공백 문자를 이용하여 각각의 토큰을 분리

(공백문자 : 공백, 탭, 줄마침 기호)


<예제>

출력결과


<예제>

출력결과


|PrintStream 클래스와 PrintWriter 클래스

PrintStream : 바이트 입력을 받아서 텍스트 형태로 출력(ex, System.out)

PrintWriter : 문자 입력을 받아서 텍스트 형태로 출력


|print( )와 println( ) 메소드

print( ) 나 println( )을 호출하면 먼저 값을 toString( ) 메소드를 호출하여 변환한 후에 출력

간단하게 값들을 포맷할 수 있지만 결과를 세밀하게 제어할 수는 없다.


|format( ) 메소드

형식 제어 문자열에 기초하여 다수의 인수를 포맷


<예제>

출력결과

->format( ) 메소드를 이용해 값을 세밀하게 제어할 수 있다.





'Programming Language > Java' 카테고리의 다른 글

10. 데이터베이스 프로그래밍  (0) 2016.06.10
9. 네트워크 프로그래밍  (0) 2016.06.10
7. 입출력 - 문자스트림  (2) 2016.06.09
6. 입출력-바이트스트림  (0) 2016.06.08
5. 스레드  (0) 2016.06.08
문자스트림

문자 스트림은 입출력 단위가 문자가 된다.


|Reader와 Writer 클래스

Reader클래스의 메소드

int read( ) : 한 바이트를 읽어서 int 타입으로 반환, 읽을 값이 없으면 -1을 반환

int read(byte[] buf) : buf의 크기만큼 데이터를 읽어서 buf에 저장하고 읽은 바이트 수를 반환

int read(byte[] buf, int offset, int length) : length만큼의 데이터를 읽어서 buf의 offset 위치에 저장하고 읽은 바이트 수를반환

void mark(int readAheadLimit) : 스트림의 현재 위치를 표시해 놓는다.

boolean markSupported( ) : 마크 기능이 지원되는지 여부를 반환

abstract void close( ) : 스트림을 닫고 모든 자원을 반납

boolean ready( ) : 스트림이 읽을 준비가 되었는지 여부를 반환

void reset( ) : 스트림을 리셋

long skip(long n) : n개의 문자를 건너뛴다.


Writer클래스의 메소드

void write(int data) : data의 하위 8비트를 출력

void write(byte[] buf) : buf[]에 저장된 바이트들을 출력

void write(byte[] buf, int offset, int length) : buf의 offset 위치에 length만큼의 바이트를 출력

void mark(int readAheadLimit) : 스트림의 현재 위치를 표시해 놓는다.

abstract void flush( ) : 스트림 버퍼의 데이터를 모두 출력

abstract void close( ) : 스트림을 닫고 모든 자원을 반납

Writer append(char c) : 문자 c를 스트림에 추가

void write(String str) : 문자열을 출력

void write(String str, int off, int len) : 문자열에서 지정된 범위를 출력


|FileReader와 FileWriter 클래스

파일로부터 텍스트 데이터를 읽고 쓰는데 사용


FileReader의 생성자

FileReader(File file) : 주어진 file을 이용하여 새로운 FileReader 객체를 생성

FileReader(String fileName) : 주어진 파일의 이름을 이용하여 새로운 FileReader 객체를 생성

FileWriter의 생성자

FileWriter(File file) : 주어진 File 객체를 이용하여서 새로운 FileWriter 객체를 생성

FileWriter(String fileName) : 주어진 파일 이름을 이용하여서 새로운 FileWriter 객체를 생성

FileWriter(Stirng fileName, boolean append) : append가 true이면 주어진 파일의 끝에 텍스트를 추가


<예제>

출력결과

->문자열을 파일에 저장할 때는 write( ) 메소드를 호출하고 문자열 객체를 매개 변수로 주면된다.

->문자를 하나씩 읽을 때는 int 타입 변수를 char로 형변환


|InputStreamReader와 OutputStreamWriter 클래스

바이트 스트림과 문자 스트림을 연결하는 두 개의 범용 브릿지 스트림.

InputStreamReader는 바이트 스트림을 문자 스트림으로 변환. 효율성을 위해 InputStreamReader를 BufferedReader로 감싸는것이 좋다

ex) BufferedReader in = new BufferedReader(new InputStreamReader(System.in));

OutputStreamWriter는 문자 스트림을 바이트 스트림으로 변환. 효율성을 위해 BufferedWriter로 감싸는것이 좋다.

ex) BufferedWriter out = new BufferedWriter(new OutputStreamWriter(System.out));


|BufferedReader와 BufferedWriter 클래스



'Programming Language > Java' 카테고리의 다른 글

9. 네트워크 프로그래밍  (0) 2016.06.10
8. 입출력 - 형식 입출력  (0) 2016.06.10
6. 입출력-바이트스트림  (0) 2016.06.08
5. 스레드  (0) 2016.06.08
4. 예외처리  (0) 2016.06.08

스트림(stream)

"순서가 있는 데이터의 연속적인 흐름"


|바이트 스트림과 문자 스트림

바이트 스트림 : 8비트의 바이트 단위로 입출력하는 클래스, 이진 데이터를 읽고 쓰기 위하여 사용.

문자 스트림 : 문자 단위로 입출력하는 클래스, 기본적으로 유니코드를 저장.


|데이터 싱크와 데이터 처리

데이터 싱크 스트림 : 소스나 목적지에 데이터를 입출력(메모리, 파이프, 파일)

데이터 처리 스트림 : 데이터 가공(그 외) 


바이트 스트림

모든 바이트 스트림은 InputStream과 OutputStream에서 파생


|InputStream과 OutputStream 클래스

int read( ) : 한 바이트를 읽어서 int 타입으로 반환, 읽을 값이 없으면 -1을 반환

int read(byte[] buf) : buf의 크기만큼 데이터를 읽어서 buf에 저장하고 읽은 바이트 수를 반환

int read(byte[] buf, int offset, int length) : length만큼의 데이터를 읽어서 buf의 offset위치에 저장하고 읽은 바이트 수를 반환

void write(int data) : data의 하위 8비트를 출력

void write(byte[] buf) : buf[]에 저장된 바이트들을 출력

void write(byte[] buf, int offset, int length) : buf의 offset 위치에 length만큼의 바이트를 출력


|FileInputStream과 FileOutputStream 클래스

FileInputStream 클래스는 파일에서 바이트를 읽고 FileOutputStream 클래스는 파일에다가 바이트를 쓴다.


FileInputStream의 생성자

1. FileInputStream(File file) : File 객체에 연결된 파일로부터 바이트를 읽는 객체를 생성한다.

2. FileInputStream(String name) : 파일의 경로 이름이 name인 파일과 연결된 입력 담당 객체를 생성한다.


FileOutputStream의 생성자

1. FileOutputStream(File file) : File 객체가 나타내는 파일에 바이트를 쓰는 객체를 생성한다.

2. FileOutputStream(String name) : 파일의 경로 이름이 name인 파일과 연결된 출력 담당 객체를 생성한다.

3. FileOutputStream(String name, boolean append) : append가 true이면 파일의 끝에 바이트를 추가하고 false이면 바이트를 기존의 바이트 위에 겹쳐서                                                                     쓴다. 

<예제>

출력결과

->read( )가 int 값을 반환하는 이유는 입력 스트림의 끝을 표시하는데 -1을 사용하기 위해

->더 이상 사용하지 않는 스트림을 닫는 것이 중요. 소스에서 만약 오류가 발생했을 경우에도 finally 블록을 사용하여 스트림을 닫고 있다. 만약 스트림을 닫지 않으면 심각한 자원 누출이 발생한다.


|BufferedInputStream과 BufferedOutputStream 클래스

각 read나 write 요청은 운영체제에 의하여 요청하는 즉시 처리된다. 이것은 매우 비효율적인 방법이다. 왜냐하면 입출력 요청은 디스크 접근이나 네트워크 접근같은 매우 시간이 많이 걸리는 동작을 요구하기 때문이다. 따라서 오버헤드를 줄이기 위하여 버퍼링된 스트림을 제공


BufferedInputStream(InputStream in) : 입력 스트림 in을 감싸는 버퍼 입력 스트림 객체를 생성

BufferedInputStream(InputStream in, int size) : 버퍼 크기가 size인 버퍼를 가진 버퍼 입력 스트림을 생성


버퍼가 없는 스트림을 버퍼가 있는 스트림으로 변경

inputStream = new BufferedInputStream(new FileInputStream("data.txt"));

outputStream = new BufferedOutputStream(new FileOutputStream("data.txt"));


<예제>

출력결과

->여기서 만약 flush( )가 실행되지 않으면 출력이 나오지 않는다. 그 이유는 아직 버퍼가 다 차지 않았기 때문에 버퍼를 파일에 쓰지 않는다.


|DataInputStream과 DataOutputStream 클래스

기초 자료형 단위로 데이터를 읽고 쓸 수 있다.

<예제>

출력결과

->입력순서와 출력순서의 데이터타입을 동일하게 맞쳐야한다.


|ObjectInputStream과 ObjectOutputStream 클래스

객체의 입출력을 지원. 객체를 파일에 저장할 수 있고 또 반대로 파일에 저장된 객체를 읽어 들일 수 있다.

객체를 파일에 저장하려면 객체가 가진 데이터들을 순차적으로 데이터로 변환하는 절차가 필요 , 이것

직렬화(serialization)라고 한다. 어떤 클래스가 직렬화를 지원하려면 Serializable이라는 인터페이스를 구현해야 된다.


<예제 >

현재 날짜 객체를 저장하였다가 다시 읽어서 콘솔에 표시하기

출력결과

문자스트림은 다음 포스팅~

'Programming Language > Java' 카테고리의 다른 글

8. 입출력 - 형식 입출력  (0) 2016.06.10
7. 입출력 - 문자스트림  (2) 2016.06.09
5. 스레드  (0) 2016.06.08
4. 예외처리  (0) 2016.06.08
3. Collections클래스  (0) 2016.06.08

+ Recent posts