반응형
InputStream
- 바이트 단위 입력 스트림 최상위 추상 클래스
- 많은 추상 메서드가 선언되고 있고 이를 하위 스트림이 상속받아 구현함
주요 하위 클래스
스트림 클래스 | 설명 |
FileInputStream | 파일에서 바이트 단위로 자료를 읽습니다 |
ByteArrayInputStream | byte 배열 메모리에서 바이트 단위로 자료를 읽습니다 |
FilterInputStream | 기반 스트림에서 자료를 읽을 때 추가 기능을 제공하는 보조 스트림의 상위 클래스 |
주요 메서드
메서드 | 설명 |
int read() | 입력 스트림으로부터 한 바이트의 자료를 읽습니다. 읽은 자료의 바이트 수를 반환합니다 |
int read(byte b[]) | 입력 스트림으로 부터 b[] 크기의 자료를 b[]에 읽습니다. 읽은 자료의 바이트 수를 반환합니다 |
int read(byte b[], int off, int len) | 입력 스트림으로 부터 b[] 크기의 자료를 b[]의 off 변수 위치부터 저장하며 len 만큼 읽습니다. 읽은 자료의 바이트 수를 반환합니다 |
void close() | 입력 스트림과 연결된 대상 리소스를 닫습니다 |
파일에서 한 바이트씩 자료 읽기
FileInputStreamTest1.java
package ch60;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
public class FileInputStreamTest1 {
public static void main(String[] args) {
FileInputStream fis = null;
try {
fis = new FileInputStream("input.txt");
System.out.println((char)fis.read());
System.out.println((char)fis.read());
System.out.println((char)fis.read());
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} finally {
try {
fis.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (Exception e2) {
// TODO: handle exception
System.out.println(e2);
}
}
System.out.println("end");
}
}
파일의 끝까지 한 바이트씩 자료 읽기
FileInputStreamTest.java
package ch60;
import java.io.FileInputStream;
public class FileInputStreamTest {
public static void main(String[] args) {
int i;
try(FileInputStream fis = new FileInputStream("input.txt")) {
while( (i = fis.read()) != -1) {
System.out.print((char)i);
}
} catch (Exception e) {
// TODO: handle exception
System.out.println(e.getMessage());
}
}
}
input.txt 파일 생성
파일에서 바이트 배열로 자료 읽기(배열에 남아 있는 자료가 있을 수 있음에 유의)
FileInputStreamTest2.java
package ch60;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.util.Iterator;
public class FileInputStreamTest2 {
public static void main(String[] args) {
int i;
try(FileInputStream fis = new FileInputStream("input2.txt")) {
byte[] bs = new byte[10];
// 10바이트씩 읽도록 지정
while((i = fis.read(bs)) != -1) {
// 시작 번호와 읽을 크기 지정
// while((i = fis.read(bs, 0, 9)) != -1) {
// 읽은 갯수 만큼만 가져오도록
for (int j = 0; j < i; j++) {
// System.out.print((char)ch);
System.out.print((char)bs[j]);
}
System.out.println(" : " + i + "바이트 읽음");
}
} catch (Exception e) {
// TODO: handle exception
System.out.println(e.getMessage());
}
}
}
반응형
'언어 > JAVA' 카테고리의 다른 글
문자단위 입출력 스트림 (0) | 2021.05.23 |
---|---|
OutputSteam (출력 스트림) (0) | 2021.05.23 |
표준 입출력 스트림 (0) | 2021.05.23 |
자바의 입출력(I/O 스트림) 종류 설명 (0) | 2021.05.23 |
오류의 로그 남기기 - java.util.logging.Logger (0) | 2021.05.23 |