Input, Output
Stream - 1 byte 를 입력받음.
InputStream
OutputStream
ex -----------------
InputStream in = System.in;
int n;
n = is.read();
System.out.println("입력 값 : " + (char) n);
ex_02 --------------------------
InputStream in = null;
byte[] b = new byte[5];
System.out.println("입력하쇼");
is = System.in;
int n;
n = is.read(b);
System.out.println("입력개수 : " + n);
for(byte bb : b)
System.out.println("입력 값 : " + (char) bb);
FileinputStream - file을 입력 출력 할수 있음.
InputStream in = new FileInputStream("경로");
OutputStream out = FileOutputStream("쓸 경로");
ex-----------------------------------------------
InputStream in = new FileInputStream("경로");
OutputStream out = new FileOutputStream("경로");
int bData;
while(true){
bData = in.read();
if(bData == -1) break;
out.write(bData);
byte[1024] 을 이용하여 한번에 1kbyte 씩 읽어오면 속도가 향상됨
ex----------------------------------------
InputStream in = new FileInputStream("d:\\memo.txt");
OutputStream out = new FileOutputStream("d:\\m_copy.txt");
int readLen;
byte[] buf = new byte[1024];
while(true){
readLen = in.read(buf);
if(readLen == -1) break;
out.write(buf, 0, readLen);
}
bufferReader - 2MByte 씩 읽어옴.
ex---------------------------
InputStream in = new FileInputStream("경로");
OutputStream out = new FileOutputStream("경로");
BufferedInputStream bIn = new BufferedInputStream(in);
BufferedOutputStream bOut = new BufferedOutputStream(out);
int bData;
while(true){
bData = bIn.read();
if(bData == -1) break;
bOut.write(bData);
}
Reader - 문자용, 2byte를 입력받을 수 있음.
ex----------------------
InputStreamReader reader = null;
System.out.println("입력하숑");
reader= new InputStreamReader(System.in);
int n;
n = reader.read();
System.out.println("입력 값 : " + (char)n);
FilterStream - 원하는 타입으로 읽어올 수 있어 편리함
ex------------------------------
OutputStream out = new FileOutputStream("경로");
DataOutputStream filterOut = new DataOutputStream(out);
filterOut.writeInt(275);
filterOut.writeDouble(45.79);
filterOut.close();
InputStream in = new FileInputStream경로");
DataInputStream filterIn = new DataInputStream(in);
int num1 = filterIn.readInt();
double num2 = filterIn.readDouble();
filterIn.close();
Writer - 문자 출력 Stream 운영체제에 맞게끔 1byte or 2byte or 3byte까지 바꿔줌.
ex-------------------------
char ch1 = 'A';
char ch2 = 'B';
Writer out = new FileWriter("d:\\filewrite.txt");
out.write(ch1);
out.write(ch2);
out.close();
Reader - 3Byte 문자일 경우라도 자동으로 2byte 바꿔줌.
ex-------------------------------------------
char[] cbuf = new char[10]; // 배열을 이용한 Reader 는 BufferedReader와 기능이 동일함.
int readCnt;
Reader in = new FileReader("경로");
readCnt = in.read(cbuf, 0, cbuf.length);
for(int i = 0; i < readCnt; i++){
System.out.println(cbuf[i]);
}
in.close();
BufferedWriter - 문자 하나가 아닌 String 형식으로 입력을 받을 수 있어 편리함
ex-----------------------
BufferedWriter out = new BufferedWriter(new FileWriter("d:\\String.txt"));
out.write("메이저리그");
out.newLine();
out.write("오늘의 경기는?");
out.newLine();
out.close();
BufferedReader - 읽어 오는 것. 마찬가지로 String 문자열을 읽어 올수 있다. 더 편리한 Scanner를 사용.
한줄을 -라인단위로- 통째로 읽어옴.
ex---------------------------
BufferedReader in = new BufferedReader(new FileReader("d:\\String.txt"));
String str;
while(true){
str = in.readLine();
if(str == null) break;
System.out.println(str);
}
in.close();
ex_02--------consol에서 직접 입력 받는 경우----------
BufferedReader buffer = null;
System.out.println("데이터를 입력하숑");
buffer = new BufferedReader(new InputStreamReader(System.in));
String str;
str = buffer.readLine();
System.out.println("입력 값 : " +str );
buffer.close();
Print(), Println() - FilterOutputStream 의 매소드들.