Input -> Output (지극히 개인적인 비유법,,)
👆 식에서 "->" 스트림을 의미함
Input, Output 구분없이 어느 한쪽에서 다른 쪽으로 데이터를 보낼려면 일종의 다리 역할(->)을 하는 친구가 필요하다 그 친구가 바로 스트림(->)이다.
추가적으로 스트림의 어원은 연속적인 데이터의 흐름을 물에 비유하여 붙여진 이름이라는데,,,여러 가지로 유사한 점이 많다고 한다.
가장 큰 특징으로는 물이 한뱡향으로 흐르는 것과 같이 스트림은 단방향통신만 가능하다. 즉, 하나의 스트림으로 입출력을 동시에 처리할 수 없다.
만약! 입출력을 동시에 처리하고 싶으면 입력 스트림 1개, 출력 스트림 1개 총 2개의 스트림을 생성하면 된다.
API Document : https://docs.oracle.com/en/java/javase/13/docs/api/java.base/java/io/package-summary.html
문서의 설명되어 있는 말을 가져와보면
Provides for system input and output through data streams, serialization and the file system. Unless otherwise noted, passing a null argument to a constructor or method in any class or interface in this package will cause a NullPointerException to be thrown.
간단하게 첫줄만 번역하면 데이터 스트림, 직렬화 및 파일 시스템을 통한 시스템 입력 및 출력 제공 이라는 말을 볼 수가 있다. 즉 Java I/O 패키지 안에는 파일 입출력과 관련된 클래스들로 구성되어 있다는 의미기도 하다.
DataInputStream dataInputStream = new DataInputStream(new FileInputStream("test.txt"));
package com.lee.collection;
import com.lee.fileio.Properties;
import java.io.FileReader;
import java.io.IOException;
public class Test {
public static void main(String[] args) throws IOException {
long startTime = System.currentTimeMillis();
System.out.println("startTime" + startTime);
FileReader fileReader = new FileReader(Properties.phonePath);
int i;
while (true) {
i = fileReader.read();
if (i == -1) {
break;
}
System.out.println((char) i);
}
long endTime = System.currentTimeMillis();
System.out.println("endTime : " + endTime);
long secDiffer = startTime - endTime;
System.out.println("시간차이 : " + secDiffer);
}
}
package com.lee.collection;
import com.lee.fileio.Properties;
import java.io.BufferedReader;
import java.io.FileReader;
import java.io.IOException;
public class Test2 {
public static void main(String[] args) throws IOException {
long starTime = System.currentTimeMillis();
System.out.println(starTime);
BufferedReader bufferedReader = new BufferedReader(new FileReader(Properties.phonePath));
while (true) {
String str = bufferedReader.readLine();
if (str == null) {
break;
}
System.out.println(str);
}
long endTime = System.currentTimeMillis();
long sedDiffer = (starTime - endTime);
System.out.println(endTime);
System.out.println("시간차이 : " + sedDiffer);
}
}
이미지 출처 및 자료 참고 :https://ccm3.net/archives/21118
이미지 출처 및 자료 참고 :https://coding-factory.tistory.com/281