일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- 8bit
- set
- where
- stream
- 자바
- JDBC
- driver
- DB연동
- 16bit
- Transaction
- 다이얼로그
- Serializable
- select
- swing
- Annotaion
- transient
- InputStream
- java
- DB
- array
- Reader
- Oracle
- 오라클
- Connection
- statement
- 예외처리
- 조회
- 난수
- Join
- 상속
- Today
- Total
오버플로
[Java] IO Stream 활용 (1) - 파일 읽기 본문
~전편에 이어서~
오늘은 Stream을 활용하여 파일을 읽어보자!
1. 8bit Stream 활용
- 영어, 숫자는 1byte이므로 읽혀 지지만, 한글은 2byte 이므로 읽혀 지지 않음
- 방법)
① File에 연결할 수 있는 Stream을 생성
FileInputStream fis = new FileInputStream(new File(“파일경로”)); //FileNotFoundException
② 스트림에서 내용 읽기
> 스트림에 연결된 파일의 내용을 1byte씩 읽어 들임
> 읽어들인 데이터가 존재하지 않으면 -1이 나옴.
> IOException 처리 필요
int value = 0;
while ( (value = fis.read()) != -1 ) { // 파일 내용의 크기가 얼마나 될지 모르니 while사용
value 사용 };
# 코딩 #
import java.io.BufferedReader;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileReader;
import java.io.IOException;
public class UseStream {
/**
* 8bit Stream 사용하여 text 파일 읽기
* @throws IOException
*/
public void usestream1() throws IOException {
FileInputStream fis = new FileInputStream(new File("C:/Users/user/Desktop/tistory/java_test.txt")); // 파일에 스트림 연결
int val = 0; // 스트림에 연결된 파일의 내용을 1byte씩 읽어 들이며 반환형이 int
while ((val = fis.read()) != -1) { // 읽어들인 데이터가 존재하지 않으면 -1이 나옴 -> 데이터가 있을 때까지 읽어들임
System.out.print((char) val);
} // end while
fis.close(); // stream 닫기!
}// usestream1
- UseStream이라는 Class를 생성한 후 8bit Stream을 사용할 method를 작성했다!
- main method에서 클래스 객체 생성 후 method를 실행하면 아래와 같이 결과가 나온다.
- throws한 IOException은 method수행 시 try~catch로 처리했고,
경로에 있는 java_test.txt는 'test'라는 영문 글자를 가지고 있당
# 출력 결과 #
test
2. 16bit Stream 활용
- 16bit Stream은 문자열을 입력받기 위해 고안된 Stream으로
FileReader(HDD 파일과 연결)와 BufferedReader(스트림에서 연결된 파일에서 줄 단위로 읽음)를 사용하면 편함
>> 연결된 파일을 줄 단위로 읽을 수 있음 (readLine())
- 방법)
① File에 연결할 수 있는 Stream을 생성
FileReader fr = new FileReader(new File(“파일경로”));
② 부족한 기능을 제공하는 스트림 연결 (줄 단위로 읽어들이는 기능)
BufferedReader br = new BufferedReader( fr );
③ 스트림에서 내용 읽기
> 스트림에 연결된 파일의 내용을 줄 단위로 읽어 들임
> 읽어들인 데이터가 존재하지 않으면 null이 나옴.
String value = “”;
while ( (value = br.readLine()) != null ) { // 줄 단위로 읽어서 저장하고 읽어들인 줄이 없으면 null이 반환됨
value 사용 } ;
# 코딩 #
/**
* 16bit Stream 사용하여 text 파일 읽기
* 한글은 16bit Stream으로 해야 깨지지 않음
* @throws IOException
*/
public void usestream2() throws IOException {
FileReader fr = new FileReader(new File("C:/Users/user/Desktop/tistory/java_test1.txt"));
BufferedReader br = new BufferedReader(fr); // BufferedReadr로 line을 읽어들이자. 속도향상!
String val = ""; // readLine method의 반환형은 String
while ((val = br.readLine()) != null) { // 읽어들일 데이터가 없다면 null이 나옴
System.out.print(val);
} // end while
br.close(); // 스트림 닫자!
}// usestream2
- 이번 경로에 있는 java_test1의 내용은 한글이며 출력이 잘 읽히는 것을 확인할 수 있다!
# 출력 결과 #
안녕하십니까!반갑습니다.
'Java' 카테고리의 다른 글
[Java] 직렬화(Serializable) / transient / ObjectStream / serialVersionUID (0) | 2021.09.01 |
---|---|
[Java] IO Stream 활용 (2) - 파일 쓰기 (0) | 2021.08.31 |
[Java] IO(Input/Output) Stream - 8bit Stream, 16bit Stream / File Class (0) | 2021.08.29 |
[Java] Exception Handling - throws / throw / 사용자 정의 예외처리 Class (0) | 2021.08.26 |
[Java] Exception Handling - Try~catch / Finally (0) | 2021.08.25 |