Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- 정보처리기사 실기 기출문제
- IntelliJ
- Linux
- mysql 튜닝
- minikube
- kotlin
- Java
- kotlin spring
- aws
- APM
- 정보처리기사실기 기출문제
- 오블완
- 티스토리챌린지
- Elasticsearch
- AI
- MySQL
- kotlin querydsl
- 코틀린 코루틴의 정석
- kotlin coroutine
- CKA 기출문제
- Pinpoint
- CKA
- 정보처리기사 실기
- 기록으로 실력을 쌓자
- Spring
- CloudWatch
- AWS EKS
- PETERICA
- Kubernetes
- 공부
Archives
- Today
- Total
피터의 개발이야기
[JAVA] 자바 파일 입출력, 커스컴 AutoCloseable 본문
반응형
서론
데이터 백업 작업 시에 파일을 읽고 쓰는 로직이 필요하여 정리를 하였습니다.
자바8 이후 자원의 생성과 해제가 자동입니다.
Java - Try-with-resources로 자원 쉽게 해제
Java7 이전에, try-catch-finally 구문에서 자원을 해제하였습니다.
Java8에서는 try-with-resources는 try(...)에서 선언된 객체들에 대해서 try가 종료될 때 자동으로 자원을 해제해주는 기능입니다.
try에서 선언된 객체가 AutoCloseable을 구현하였다면 Java는 try구문이 종료될 때 객체의 close() 메소드를 호출해 줍니다.
File Read
@Test
public void fileReadTest() throws FileNotFoundException {
try(
//파일 객체 생성
FileReader file = new FileReader("test.csv");
BufferedReader inFile = new BufferedReader(file);
){
String sLine = null;
List<String> list = new ArrayList<>();
while( (sLine = inFile.readLine()) != null ){
list.add(sLine);
}
System.out.println(list.toString());
}catch ( IOException e ){
e.printStackTrace();
}
}
File Write
@Test
public void fileWriteTest(){
try(
FileWriter fw = new FileWriter( "fileWrite.txt" ,true);
BufferedWriter bw = new BufferedWriter( fw);
){
bw.write("Java7 이전에, try-catch-finally 구문에서 자원을 해제하였다.");
bw.newLine();
bw.write("Java8에서는 AutoCloseable인테페이스로 구현된 자원은 자동으로 close를 해준다. ");
}catch (IOException e) {
e.printStackTrace();
}
}
AutoCloseable을 구현하는 클래스 생성
@Test
public void autoCloseableTest() {
try (makeAutoClose cr = new makeAutoClose()) {
// 데모실행
cr.checkTheAutoClose();
} catch (Exception e) {
e.printStackTrace();
}
}
private static class makeAutoClose implements AutoCloseable {
public void checkTheAutoClose() {
System.out.println("AutoCloseable 인터패이스로 구현되어 있다.");
}
@Override
public void close() throws Exception {
System.out.println("try()안에 객체생성되어 있다면 try 문을 벗어나면 close 메소트를 호출한다.");
}
}
AutoCloseable은 인터페이스로 구현이 되어 있습니다.
그래서 makeAutoClose를 만들어 자동으로 close가 실행 되는 지 살펴보았습니다.
try() 안에는 AutoCloseable type으로 만들어진 객체만 들어갈 수 있습니다. 그래서 try문을 벗어나면 자동으로 close가 실행이 됩니다.
소스는 여기에 있습니다.
반응형
'Programming > JAVA' 카테고리의 다른 글
[JAVA] Serialization, 직렬화와 역직렬화 (0) | 2021.01.24 |
---|---|
[JAVA] Java replace (0) | 2021.01.19 |
[JAVA] CSV 파일 만들기 (2) | 2021.01.14 |
[JAVA] 양방향 암호화기법 AES_ENCRYPT, AES_DECRPYT (0) | 2021.01.02 |
[JAVA] JAVA 연습문제 풀어볼 수 있는 곳 (0) | 2020.12.19 |
Comments