자바

스트림(Stream)

열곰탱 2022. 8. 22. 14:37

스크림

순서가 있는 데이터의 연속적인 흐름이라는 의미이다. 

 

 

Input = 프로그램이 들어온다

Output = 프로그램이 나간다.

 

 

 InputStream이 while로 계속 데이터가 들어오는지 대기하다가 

read로 데이터를 들어 온것을 읽고 그 데이터를 number로 저장한다.

 

여기서 in은 키보드랑 연결된 선이다.

InputStream in = System.in;

 

 

 

 

A를 콘솔창에 입력하면 ASCII코드 값이 65가 나온다.

 

 

number를 다운캐스팅 해주면 

A를 입력하면 A가 나온다.

 

배열로 스트림

 

 

배열크기를 4로지정했기때문에 콘솔창에서 데이터를 아무리 많이 입력해도 4개의 데이터만 출력된다.

package communication;

import java.io.InputStream;
import java.io.InputStreamReader;

public class InputEx02 {

	public static void main(String[] args) {
		char[] dataArr = new char[4]; //크기가 1인 배열
		
	
	try {
		InputStream in = System.in;	
		InputStreamReader ir = new InputStreamReader(System.in); //ir은 배열로 만들수 있다.
		
		ir.read(dataArr);
		
		for(int i=0; i<dataArr.length; i++) {
			System.out.print(dataArr[i]);
		}	
		
	}catch(Exception e) {
		
	}

}

}

 

 

 

버퍼스트림

 

버퍼

데이터를 한 곳에서 다른 한 곳으로 전송하는 동안 일시적으로 그 데이터를 보관하는 메모리의 영역

 

package communication;

import java.io.BufferedReader;
import java.io.InputStreamReader;

public class InputEx03 {

	public static void main(String[] args) {
		BufferedReader br = new BufferedReader(
				new InputStreamReader(System.in)
				);

		try {
			String s = br.readLine();
			System.out.println(s);
		} catch (Exception e) {
			e.printStackTrace();
		}
		
	}

}

 

 

 

Output

package communication;

import java.io.BufferedWriter;
import java.io.OutputStreamWriter;

public class OutputEx01 {

	public static void main(String[] args) {
		BufferedWriter bw = new BufferedWriter(
				new OutputStreamWriter(System.out)
		);
		try {
			bw.write("adsfads");
			bw.flush();
		} catch (Exception e) {
			// TODO: handle exception
		}
	}

}

 

 

 

 

파일 입출력

 

파일 출력

클래스에 파일을 하나 생성한다.

 

만든파일을 경로로 가져오기 쉽게 D드라이브로 가지고 옵니다.

 

코드를 실행해보면 파일에 적힌 hello를 콘솔창으로 불러올수 있습니다. 

 

 

파일입력 

package communication;

import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileWriter;

public class FileEx02 {

	public static void main(String[] args) {
		File file = new File("d:\\log.txt");
		
		try {
			FileWriter fr = new FileWriter(file);
			BufferedWriter bw = new BufferedWriter(fr);
			
			bw.write("adsfsda");
			bw.flush();

		} catch (Exception e) {
			e.printStackTrace();
		}
}

}

 

파일이 만들어졌다.

 

 

 

 

상대경로로 파일 불러오기

package communication;

import java.io.BufferedReader;
import java.io.File;
import java.io.FileReader;

public class FileEx04 {
	
	//		 ./ 현재경로
	// 		../ 바로 위폴더
	// 	  / 최상위 폴더
	
	//위에 3가지 것들이 안먹힐때는 
	//자바에서 경로를 찾을떄는 최상의 폴더 study에서 내려오면된다. 

	public static void main(String[] args) {
		File file = new File("src/communication/data.txt"); //상대경로
		
		try {
			FileReader fr = new FileReader(file);
			BufferedReader br = new BufferedReader(fr);
			
			System.out.println(br.readLine());
		} catch (Exception e) {
			e.printStackTrace();
		}
	}

}