나의개발일지
입출력(출력편) .for Java 본문
728x90
이번 글에서는 출력에 대해 알아본다
출력
OutputStream과 OutputStreamWriter
입력편에서 다룬 InputStream이나 InputStreamReader가 입력을 위한 스트림을 생성하듯이, 이 클래스들은 출력을 위한 스트림을 생성한다는 점만 다르다.
OutputStream
<예제 코드>
import java.io.*;
class OutputStreamTest {
public static void main( String[] args) {
// 키보드를 입력 스트림 객체에 할당하고, 콘솔을 출력 스트림 객체에 할당한다.
InputStream is = System.in;
OutputStream out = System.out;
System.out.pritnln("데이터를 입력하세요 : ");
try{
//입력 스트림의 객체의 read() 메서드로 1 바이트씩 읽어 들인다.
int input = is.read();
System.out.pritnln("실제 입력된 데이터 : " + input);
System.out.print("출력 데이터 : " );
//출력 스트림 객체의 write() 메소드로 1 바이트씩 읽어 들인다.
out.write( (char)input);
out.close();
} catch (IOException io) {
System.out.pritnln( io.toString() );
}
}
}
<실행 결과>
데이터를 입력하세요 : java
실제 입력된 데이터 : 106
출력 데이터 : j
OutputStreamWriter
생성자 | 설명 |
OutputStreamWriter( OutputStream out ) | 인수로 OutputStream 객체를 받아서 바이트 스트림을 문자 스트림으로 연결한다 |
OutputStreamWriter( OutputStream out, String encoding) | 지정된 인코딩 방식을 사용하는 OutputStreamWriter를 생성한다. |
<예제 코드>
import java.io.*;
class OutputStreamWriterTest {
public static void main( String[] args ){
//10 개의 문자를 기억할 수 있는 배열을 선언
char[] arr = new char[10];
// 키보드를 입력 스트림 리더 객체에 할당하고, 콘솔을 출력 스트림 리더 객체에 할당한다.
InputStreamReader isr = new InputStreamReader( System.in );
OutputStreamWriter osw = new OutputStreamWriter( System.out );
System.out.print("데이터를 입력하세요 : ");
try {
//10개의 문자를 읽어 배열에 저장한다.
int input = isr.read( arr );
System.out.print( "실제 입력된 글자 : ");
//배열 내의 10개 문자를 출력한다.
osw.write( arr );
osw.close();
} catch (IOException io) {
System.out.pritnln( io.toString() );
}
}
}
<실행 결과>
데이터를 입력하세요 : 한글을 입력하고 있습니다.
실제 입력된 글자 : 한글을 입력하고 있
BufferedOutputStream과 BufferedWriter
Buffered 로 시작하는 스트림은 버퍼의 기능을 제공해서 입출력 속도를 증가시키는 보조적인 스트림이다.
BufferedOutputStream
생성자 | 설명 |
BufferedOutputStream( OutputStream in ) | OutputStream 객체를 인수로 받아 버퍼가 사용되는 스트림을 생성한다. 버퍼는 기본 크기 8192 바이트로 잡힌다. |
BufferedOutputStream( OutputStream in, int size ) | 위의 생성자와 동일하나 버퍼의 크기를 size로 설정한다. |
<예제 코드>
import java.io.*
class BufferedOutputStreamTest {
public static void main(String args[]) {
try{
// 파일을 인수로 FileOutputStream 객체를 생성하고 그 객체를 인수로 BufferedOutputStream 객체를 생성한다.
FileOutputStream fos = new FileOutputStream("alpha.txt");
BufferedOutputStream bos = new BufferedOutputStream( fos );
// a에서 z까지 문자를 기록한다. 버퍼를 사용하기 떄문에 실제 파일에 기록 x
for(int i='a'; i <= 'z'; i++) {
bos.write(i);
}
//버퍼에 기록된 데이터를 실제 파일에 기록한다.
bos.flush();
fos.close();
bos.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
<실행결과>
alpha.txt 파일에 a-z까지 저장
BufferedWriter
생성자 | 설명 |
BufferedWriter( Writer out ) | Writer 객체를 인수로 받아 버퍼가 사용되는 스트림을 생성한다. 버퍼는 기본 크기 8192 바이트로 잡힌다. |
BufferedWriter( Writer out, int size ) | 위의 생성자와 동일하나 버퍼의 크기를 size로 설장한다. |
import java.io.*;
import java.util.*;
class BufferedOutputStreamTest {
public static void main(String args[]) {
try{
FileReader fr = new FileReader("input.txt");
BufferedReader br = new BufferedReader(fr);
FileWriter fw = new FileWriter("output.txt");
BufferedWriter bw = new BufferedWriter(fw);
int count = 1;
//버퍼에서 파일을 라인 단위로 읽는다
String line = br.readLine();
while( line != null ) {
//읽을 라인을 공백을 기준으로 토큰으로 구분하는 객체를 생성한다.
StringTokenizer st = new StringTokenizer(line, "");
while(st.hasMoreTokens()){
if( st.nextToken().equals( "자바" )) {
//읽은 라인 내에 "자바"라는 단어가 있으면 출력버퍼에 기록하고 버퍼의 내용을 파일에 기록한다.
bw.write( line );
bw.flush();
bw.newLine();
break;
}
}
}
line = br.readLine();
} catch ( Exception e ) {
System.out.pritnln( e.toString() );
}
}
}
<실행결과>
input.txt | output.txt |
우리는 자바 언어를 학습합니다. 그리 쉽지는 않지만 어렵지도 않습니다. 자바 언어에 숙달되면 좋겠습니다. 많은 경험이 필요하니 급하게 생각하지 마세요. |
우리느 자바 언어를 학습합니다. 자바 언어에 숙달되면 좋겠습니다. |
728x90
반응형