- FileInputStream
FileInputStream 예제 : 파일에서 데이터를 읽기 위한 클래스
주요 메서드
int read()
: 1 byte씩 내용을 읽어 리턴
int read(byte[] buf)
: buf의 크기만큼 읽어서 buf 변수에 저장. 실제로 읽은 바이트수를 리턴
가장 많이 쓰이는 방식
int read(byte[] buf, int start, int len)
: buf의 len만큼 읽어서 buf 변수에 start 인덱스부터 저장.
실제 읽은 바이트 수 리턴
long available()
: 읽기 가능한 바이트 수를 리턴.
📌
package chap14;
import java.io.FileInputStream;
import java.io.IOException;
public class FileInputStreamEx1 {
public static void main(String[] args) throws IOException {
String src = "src/chap14/InputStreamEx1.java";
FileInputStream fis = new FileInputStream(src);
int data = 0;
System.out.print("1. read() 메서드로 읽기=============");
while((data=fis.read()) != -1) { //EOF(End Of File)
System.out.print((char)data);
}
fis.close();
System.out.print("2. read(byte[] buf) 메서드로 읽기=============");
fis = new FileInputStream(src);
//fis.available() : 읽기 가능한 바이트 수.
// 현재 하나도 읽지 않았기 때문에 파일의 바이트 크기와 같다.
byte[] buf = new byte[fis.available()]; //buf의 크기가 파일의 바이트 크기이다.
//data=fis.read(buf) : buf의 크기만큼 읽어서 buf에 읽은 데이터 저장.
// data변수에는 실제로 읽은 바이트 수를 저장.
while((data=fis.read(buf)) != -1) {
//String <= byte[] , buf에서 0번 인덱스부터 data크기까지를 문자열로 변환.
System.out.print(new String(buf,0,data));
}
System.out.println();
fis.close();
System.out.print("3. int read(byte[] buf, int start, int len) 메서드로 읽기=============");
fis = new FileInputStream(src);
/*
* data=fis.read(buf,0,fis.available()
* buf : 0번 인덱스 부터fis.available()의 갯수만큼 데이터 저장.
* data : 실제 읽은 바이트 수를 전달.
*/
while((data=fis.read(buf,0,fis.available())) != -1) {
System.out.print(new String(buf,0,data));
}
System.out.println();
}
}
'수업(국비지원) > Java' 카테고리의 다른 글
[Java] chap14 : IO기반 입출력 - FileOutputStream 클래스 (0) | 2023.04.17 |
---|---|
[Java] chap14 : IO기반 입출력 - FileReader 클래스 (0) | 2023.04.17 |
[Java] chap14 : IO기반 입출력 - Process(Runtime.gerRuntime().exec) (0) | 2023.04.17 |
[Java] chap14 : IO기반 입출력 - Writer 클래스 (0) | 2023.04.17 |
[Java] chap14 : IO기반 입출력 - OutputStream 클래스 (0) | 2023.04.17 |