write(int c) 메소드는 매개 변수로 주어지는 int(4byte)에서 끝 2byte(1개의 문자)만 출력 스트림으로 보냅니다.
매개변수가 int 타입이라고 4byte 모두를 보내는 것은 아닙니다.
package sec19.exam01;
import java.io.FileWriter;
import java.io.Writer;
public class WriteExample {
public static void main(String[] args) throws Exception {
Writer writer = new FileWriter("저장 위치/test.txt");
char a = 'A';
char b = 'B';
char c = 'C';
writer.write(a);
writer.write(b);
writer.write(c);
writer.flush();
writer.close();
}
}
write(char[] cbuf) 메소드
매개값으로 주어진 char[] 배열의 모든 문자를 출력 스트림으로 보냅니다.
package sec19.exam01;
import java.io.FileWriter;
import java.io.Writer;
public class WriteExample_2 {
public static void main(String[] args) throws Exception {
// TODO Auto-generated method stub
Writer writer = new FileWriter("저장 위치/test2.txt");
char[] array = { 'A', 'B', 'C' };
//배열의 모든 문자를 출력합니다.
writer.write(array);
writer.flush();
writer.close();
}
}
write(char[] cbuf, int off, int len) 메소드
c[off]부터 len개까지의 문자를 출력스트림으로 보냅니다.
아래는 배열 일부를 출력하는 코드 입니다.
package sec19.exam01;
import java.io.FileWriter;
import java.io.Writer;
public class WriteExample_3 {
public static void main(String[] args) throws Exception {
// TODO Auto-generated method stub
Writer writer = new FileWriter("저장위치/test3.txt");
char[] array = { 'H', 'E', 'L', 'L', 'O' };
//배열 1번 인덱스부터 3개를 출력합니다.
writer.write(array, 1, 3);
writer.flush();
writer.close();
}
}
문차 입력 스트림: Reader
Reader는 문자 기반 입력 스트림의 최상위 클래스로 추상 클래스 입니다.
모든 문자 기반 입력 스트림은 Reader 클래스를 상속받아서 만들어집니다.
아래는 주요 메소드들입니다.
리턴 타입
메소드
설명
int
read()
1개의 문자를 읽고 리턴합니다.
int
read(char[] cbuf)
읽은 문자들을 매개값으로 주어진 문자 배열에 저장하고 읽은 문자 수를 리턴합니다.
int
read(char[] cbuf,int off, int len)
len개의 문자를 읽고 매개값으로 주어진 문자 배열에서 cbuf[off]부터 len개까지 저장합니다
void
close()
입력 스트림을 닫습니다.
read() 메소드
read() 메소드는 반대로 입력 스트림으로부터 1개(2byte)의 문자를 읽고 int(4byte) 타입으로 리턴합니다.
리턴된 4byte 중 끝에 있는 2byte에 문자 데이터가 들어 있습니다.
아래코드는 저장된 ELL을 한문자씩 읽는 코드 입니다.
package sec19.exam01;
import java.io.FileReader;
import java.io.Reader;
public class ReadExample {
public static void main(String[] args) throws Exception {
Reader reader = new FileReader("저장위치/test3.txt");
while(true) {
int data = reader.read();
if(data == -1) break;
System.out.println((char)data);
}
reader.close();
}
}
read(char[] cbuf, int off, int len) 메소드
read(char[] cbuf, int off, int len) 메소드는 입력스트림으로 부터 len개의 문자 만큼 읽고 매개값으로 주어진 문자배열에서 cbuf[off] 부터 len개까지 저장합니다.
읽은 문자수인 len개를 리턴합니다.(실제로 읽은 문자수가 len개보다 적은 경우 읽은수만큼 리턴합니다.)
package sec19.exam01;
import java.io.FileReader;
import java.io.Reader;
public class ReadExample_3 {
public static void main(String[] args) throws Exception {
// TODO Auto-generated method stub
Reader reader = new FileReader("저장 위치/test3.txt");
char[] buffer = new char[5];
//입력 스트림으로 부터 3개의 문자를 읽고 buffer[2], buffer[3],buffer[4]에 각각 저장
int readCharNum = reader.read(buffer, 2, 3);
if(readCharNum != -1) {
for(int i=0; i<buffer.length; i++) {
System.out.println(buffer[i]);
}
}
reader.close();
}
}