FileInputStream은 바이트 단위로 파일에서 데이터를 읽어오는 기반 스트림입니다. 텍스트 파일뿐만 아니라 이미지. 비디오,
실행 파일 등 바이너리 데이터에도 사용됩니다.
단어 설명
"바이너리 데이터"라는 말은 텍스트가 아닌 모든 데이터를 의미해요. 컴퓨터가 처리하는 모든 파일은 결국 0과 1로 이루어진 이진(binary) 데이터로 저장됩니다.
| 루트 폴더에서 a.txt 파일을 생성하고 텍스트를 넣어주세요
Hello World.
by tenco.
| 시나리오 1
package ch02;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.InputStream;
public class MyFileInputStream {
public static void main(String[] args) {
// 파일을 바이트 단위로 읽어 들이는 녀석
FileInputStream in = null;
// 지금은 null 값으로 초기화했어.
//즉, 아직 어떤 파일도 가리키지 않는 상태라는 뜻.
//왜 null로 초기화하냐면, 나중에 try 블록에서 실제 파일과 연결된
//FileInputStream 객체를 만들어서 할당하려고.
int readDate;
try{
in = new FileInputStream("a.txt");
readData = in.read();
System.out.println("readData : " + readData);
System.out.println("readData : " + (char)readData); // 첫 번째 글자만 출력됨
readData = in.read();
System.out.println("readData : " + readData);
System.out.println("readData : " + (char)readData); // 두 번째 글자만 출력됨
} catch (FileNotFoundException e) { //파일이 없을 경우 잡는 예외구문
throw new RuntioneException(e);
}catch (IOException e) { // 나머지 입출력전인 오류를 잡는 구문
throw new RumtimeException(e);
}
} // end of main
}
|시나리오 2
package ch02;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
/**
* 파일 입력 스트림을 사용해 보자.
*/
public class MyFileInputStream2 {
public static void main(String[] args) {
// a.txt 파일에서 바이트 단위로 데이터를 읽어서 콘솔창에 출력해 보자.
// 주의 : 한글은 3바이트 기반이라 1바이트 씩 읽으면 깨짐 발생할 수 있음.
try(FileInputStream in = new FileInputStream("a.txt")) { //
// 사전 기반 지식
// 파일에서 바이트 단위로 데이터를 읽을 때 더이상 읽을 데이터가 없다면
// 정수값 -1 을 반환한다.
int readData; // in.read의 값을 담아주기 위해 변수 선언한 것이다.
while( (readData = in.read()) != -1 ) {
System.out.print((char)readData);
}
}catch (EXception e) {
throw new RuntimeException(e);
}
}
}
728x90
'JAVA 유용한 클래스' 카테고리의 다른 글
(JAVA)문자 기반 스트림 (키보드,콘솔,파일) -16 (3) | 2025.05.29 |
---|---|
(JAVA) 파일로 데이터 내보내기 FileOutputStream - 15 (0) | 2025.05.29 |
(JAVA)자바 표준 입출력 (키보드, 콘솔) - 13 (0) | 2025.05.29 |
(JAVA)자바 I/O 개론 (작성중) - 12 (0) | 2025.05.29 |
(JAVA) 일본식 Time (0) | 2025.05.14 |