콘솔 입출력, 종이에 입출력을 할 수 있는 것처럼 파일에 입출력을 하는 것을 말한다.
File : .txt .pdf .xls .csv .ppt .jpg ~~
[ 파일 --- (스트림 연결) --- 자바 프로그램 ]
- 파일의 내용을 읽어올 수 있다.
- 파일에 데이터를 내보낼 수 있다.
- 자바만의 I/O 모델을 기반으로 어떤 형태의 데이터든지 같은 형태로 입출력이 가능하다.
oop0920 우클릭 → new → file 클릭
- file name에 확장명 txt로 작성하면 이클립스에서 메모장 파일도 만들 수 있다.
byte형
: 1바이트 할당 (한글 안됨) ✔️
char형
: 2바이트 할당 (메모리가 조금 무거워짐)
- 한글이 깨진다.
FileInputStream fis=null;
String filename=" ";
String filename="data.txt";
String filename="I:/java202207/workspace/basic01_java/src/oop0920/data.txt";
* 만약 경로를 잘못작성하거나 파일이 없으면 에러가 난다.
* 그 에러는 <예외처리>로 어떤 에러가 났는지 보여지도록 해야한다.
FileInputStream fis=null;
try {
fis=new FileInputStream(filename);
while(true) {
int data=fis.read(); //1바이트 읽기
if(data==-1) { //파일의 끝(End Of File)인지?
break;
}//if end
// System.out.println(data);
System.out.printf("%c", data);
}//while end
}catch (Exception e) {
System.out.println("파일 읽기 실패 : " + e);
}finally {
//자원반납
//정상적으로 나와도 close, 비정상적으로 나와도 close 시켜줘야한다.
try {
if(fis!=null) {fis.close();}
} catch (Exception e2) {}
}//end
💻 Console
무ê¶í ê½ì´ í¼ììµëë¤.
Gone With The WInd!!
ì¤íì¹
ì½ë¦¬ì
ITWILL ìì´í°ì êµì¡ì¼í°
02-6255-8002
int data=fis.read();
1바이트씩 읽기
- 1바이트씩 커서가 순차적으로 읽고 어느순간 맨 마지막까지 읽게된다.
if(data==-1) { //파일의 끝(End Of File)인지?
break;
}//if end
- -1이 반환된다. -1 은 파일의 끝에 도달했다는 의미와 같다.
if(fis!=null) {fis.close();}
- 파일을 열어서 다 읽고 난 후엔 닫아줘야 한다. 요새는 자동으로 닫히도록 설계되어있지만, 안되는 프로그램도 있기 때문에 그냥 무조건 작성해주는 것을 추천한다.
byte형
: 1바이트 할당 (한글 안됨)
char형
: 2바이트 할당 (메모리가 조금 무거워짐) ✔️
- 한글 안 깨짐
FileReader fr=null;
String filename="I:/java202207/workspace/basic01_java/src/oop0920/data.txt";
FileReader fr=null;
try {
fr=new FileReader(filename);
while(true) {
int data=fr.read(); //2바이트 읽기
if(data==-1) {
break;
}//if end
System.out.printf("%c", data);
}//while end
} catch (Exception e) {
System.out.println("파일 읽기 실패 : " + e);
} finally {
//자원반납
//정상적으로 나와도 close, 비정상적으로 나와도 close 시켜줘야한다.
try {
if(fr!=null) {fr.close();}
} catch (Exception e2) {}
}//end
💻 Console
무궁화 꽃이 피었습니다.
Gone With The WInd!!
오필승
코리아
ITWILL 아이티윌 교육센터
02-6255-8002
FileReader fr=null;
BufferedReader br=null;
package oop0920;
import java.io.BufferedReader;
import java.io.FileReader;
public class Test03_input {
public static void main(String[] args) {
// 3) 메모장 파일의 내용을 엔터 단위로 가져오기
String filename="I:/java202207/workspace/basic01_java/src/oop0919/Order.java";
FileReader fr=null;
BufferedReader br=null;
try {
//1)파일 가져오기
fr=new FileReader(filename);
//2)파일 내용 읽기
int num=0; //행번호 넣는 변수
br=new BufferedReader(fr); // BufferedReader에 담기
while(true) {
String line=br.readLine(); //3) 엔터(\n)를 기준으로 한줄씩 가져오기
if(line==null) { //파일의 끝인지? (EOF)
break; //반복문 빠져나감
}//if end
System.out.printf("%d %s\n", ++num, line); //%d ++num 행번호 1씩증가, %s line 문자열 출력, \n 줄바꿈
//문제) 20행마다 밑줄 긋기
if(num%20==0) {
System.out.println("------------------------------------------------------------------------------");
}//if end
}//while end
} catch (Exception e) {
System.out.println("파일 읽기 실패 : " + e);
} finally {
//자원반납
//정상적으로 나와도 close, 비정상적으로 나와도 close 시켜줘야한다.
try {
if(br!=null) {br.close();}
} catch (Exception e) {}
try {
if(fr!=null) {fr.close();}
} catch (Exception e) {}
}//end
} // main() end
} // class end
💻 Console