본문 바로가기

Archived(CSE Programming)/Java

Java_Stream

# 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