본문 바로가기
study/Java

[Java] 36. IO 입력스트림 (FileInputStream)

by 금이패런츠 2022. 4. 1.
728x90
반응형
package chap15;

import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;

/*
 * FileInputStream 예제 : 파일의 내용을 읽어서 화면에 출력하기
 * 주요메서드
 * int read() : 1byte를 읽어서 내용을 리턴.
 * int read(byte[] buf) : buf의 크기만큼 읽어서 buf변수에 데이터를 저장.
 *                        실제 읽은 바이트수를 리턴.
 * int read(byte[] buf,int start, int len) 
 *                      : 파일에서 len 크기만큼 데이터를 읽어서
 *                        buf변수에 start 인덱스부터 데이터를 저장.
 *                        실제 읽은 바이트수를 리턴.
 * int available() : 읽을 수 있는 파일의 크기를 바이트수로 리턴                        
 */
public class FileInputStreamEx1 {
	public static void main(String[] args) throws IOException {
		//파일의 위치는 각자 폴더에 맞도록 수정해야 함
		FileInputStream fis = 
				new FileInputStream("src/chap15/InputStreamEx1.java");
		int data =0;
		System.out.println("===== read() 메서드를 이용하여 읽기");
		while((data=fis.read()) != -1)
			System.out.print((char)data);
		System.out.println();

		System.out.println("===== read(byte[]) 메서드를 이용하여 읽기");
        fis = new FileInputStream("src/chap15/InputStreamEx1.java");
        //fis.available() : 읽기 가능 바이트 수. 
        //                  한개도 읽기 않았기 때문에 파일의 바이트 크기와 같다. 
		byte[] buf = new byte[fis.available()];//buf의 크기가 파일의 바이트크기임
		//data=read(buf) : buf의 크기만큼 읽어서 buf에 읽은 데이터를 저장
		//                 data변수에는 실제로 읽은 바이트수를 저장 
		while((data=fis.read(buf)) != -1)
			//buf에서 0번인덱스부터 data 크기까지를 문자열로 변환.  
			System.out.print(new String(buf,0,data));
		System.out.println();

		System.out.println
		    ("===== read(byte[],int start,int len) 메서드를 이용하여 읽기");
        fis = new FileInputStream("src/chap15/InputStreamEx1.java");
        //fis.read(buf,0,buf.length)
        //    buf에 buf.length만큼 읽어서 0번 인덱스 부터 읽인 데이터를 저장
		while((data=fis.read(buf,0,buf.length)) != -1)
			System.out.print(new String(buf,0,data));
		System.out.println();
	
	}
}
728x90
반응형