728x90
반응형
[Java] 80. 바이트 기반의 파일 입력 스트림
1. 파일 입력 스트림이란?
2. 파일 입력 스트림의 작동 방식
1. 파일 입력 스트림이란?
(1) 기반 스트림(Base Stream) : 데이터 소스와 직접 연결되는 스트림으로, 실제 데이터 읽기나
-바이트 기반 스트림
-문자 기반 스트림
(2) 보조 스트림(Filter Stream)
-버퍼링
-데이터 변환
-객체 직렬화
-문자 인코딩
*기반 스트림과 보조 스트림은 종속적인 관계이다.
2. 파일 입력 스트림의 작동 방식
(1)
(2)
(3)
package io.file.ch01;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
public class MyFileInputStream {
public static void main(String[] args) {
// 외부에 있는 파일 데이터를 읽으려면 input이라는 행동 필요
FileInputStream in = null;
try {
in = new FileInputStream("a.txt");
// 1단계
//int readData = in.read();
// 2단계
//System.out.print((char)in.read());
//System.out.print((char)in.read());
//System.out.print((char)in.read());
// 3단계
// 읽을 데이터가 더이상 없다면 -1을 반환한다.
int readData;
while((readData = in.read())!=-1) {
System.out.println((char)readData);
}
// 4단계 FileInputStream(기반 스트림) 대상에 접근해서
// 한 바이트씩 읽는 기능을 가진다.
// 1byte: 127~ -128 정수값 : a-->97, A-->65
// 대-->정수값 얼마일까?
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
}
package io.file.ch01;
import java.io.BufferedInputStream;
import java.io.FileInputStream;
import java.io.IOException;
public class MyBufferedInputStream {
public static void main(String[] args) {
// 보조 스트림의 사용 -> 반드시 기반 스트림이 필요하다.
FileInputStream fin = null;
BufferedInputStream bfin = null;
try {
// 기반 스트림
fin = new FileInputStream("a.txt");
// 보조 스트림(기반 스트림)
bfin = new BufferedInputStream(fin);
int data;
while((data = bfin.read()) != -1) {
System.out.println((char)data);
}
} catch (Exception e) {
// 리소스 자원 정리
// 열었던 자원의 순서를 반대로 닫아주자.
if(bfin!=null) {
try {
bfin.close();
} catch (IOException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
}
if(fin != null) {
try {
fin.close();
} catch (IOException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
}
}
}
}
728x90
반응형
'Java > 자바 Stream' 카테고리의 다른 글
[Java] 83. 파일 Copy 예제: 기반 스트림에 확장을 붙여 더욱 빠르게 연산시켜보자. (0) | 2024.05.17 |
---|---|
[Java] 82. 파일 Copy(바이트 기반 입/출력) (0) | 2024.05.16 |
[Java] 81. 파일 출력 스트림 (바이트) (0) | 2024.05.16 |
[Java] 79. 표준 입출력 (0) | 2024.05.14 |
[Java] 78. 자바 I/O (0) | 2024.05.14 |