# Stream
데이터 통로
파일 입출력
네트워크 소켓(서버통신)
xxxStream
xxxReader(Writer)
Source to Destination
콘솔 입출력, 파일 입출력 외에도
객체를 주고 받을 수 있는 Stream 존재 ObjectInput(Output)Stream -> Serializable
직렬화 객체는 Object IO을 통해 직렬화 가능
직렬화의 장점 중 하나는 그대로 역직렬화를 통해 메모리상의 로드가 가능하다는 것(편하다)
단, 속도는 단점
import java.io.File;
import com.sinc.intern.stream.FileObj;
public class StreamMain {
public static void main(String[] args) {
String writeMsg = "아! 드디어 끝나는구나~~ 빨리 끝내라~섭";
FileObj obj = new FileObj();
File file = new File("sinc.txt");
// obj.saveToFile(file, writeMsg);
obj.loadToFile(file);
}
}
package com.sinc.intern.stream;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileReader;
import java.io.FileWriter;
public class FileObj {
public void saveToFile(File file, String msg) {
FileWriter fw = null;
BufferedWriter bw = null;
// TCFTC
try {
// Chaining
fw = new FileWriter(file);
bw = new BufferedWriter(fw);
bw.write(msg);
System.out.println("save to ok");
}catch(Exception e) {
e.printStackTrace();
}finally {
try {
bw.close();
}catch(Exception e) {
e.printStackTrace();
}
}
}
public void loadToFile(File file) {
FileReader fw = null;
BufferedReader bw = null;
// TCFTC
try {
// Chaining
fw = new FileReader(file);
bw = new BufferedReader(fw);
String read = bw.readLine();
System.out.println(read);
}catch(Exception e) {
e.printStackTrace();
}finally {
try {
bw.close();
}catch(Exception e) {
e.printStackTrace();
}
}
}
}
Scanner는 이러한 스트림을 하나의 객체로 만들어둔 것
마지막 Stream만 닫아주면 전부 다 닫을 수 있다
cf. 코딩테스트에서 주로 사용하는 Stream
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
br.nextLine(); // 한 줄씩 읽어들이기
StringTokenizer st = new StringTokenizer(br.nextLine); // 한줄 읽어서 나누기
st.nextToken(); // 하나씩 토큰 구분
int var = Integer.parseInt(st.nextToken()); // 한 줄씩 읽어들여 Integer로 Scan
'Archived(CSE Programming) > Java' 카테고리의 다른 글
Java_Thread (0) | 2020.01.17 |
---|---|
Java_예외처리 (0) | 2020.01.17 |
Java_다형성과 컬렉션 (0) | 2020.01.16 |
Java_OOP와 다형성 (0) | 2020.01.14 |
Java_자바의 기본 (0) | 2020.01.13 |