자바
스트림(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();
}
}
}