[JAVA] 다양한 타입의 입출력

고민정·2024년 4월 9일

JAVA

목록 보기
31/32


이 전에는 항상 예외처리를 해줄때 try-catch-finally 를 이용해 파일을 열고 읽고 쓰고 닫았다.
하지만 JAVA7 부터 try-with-resources 를 쓰는게 가능해졌다.

try-with-resources
사용한 자원들을 자동으로 종료시켜주는 기능

즉 close( ) 를 해주지 않아도 된다는 것이다.

또한 지금까지 파일로만 받아왔는데 이와는 다른 형식으로 파일 뿐만 아니라 다른 입출력을 받아오는 방법에 대한 코드를 작성했다.
DataInputStream, DataOutputStream 을 통해 파일뿐만 아니라 다른 입출력도 형식에 맞추어 불러올 수 있다.


💡 try-with-resources E.g.

import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.io.FileInputStream;
import java.io.FileOutputStream;

public class ByteExam2 {
    public static void main(String[] args) {

        try (
                DataOutputStream out = new DataOutputStream(new FileOutputStream("data.txt"));
                DataInputStream in = new DataInputStream(new FileInputStream("src/testScope.java"));
        ) {
            int readCount = -1;
            byte[] buffer = new byte[512];
            while ((readCount = in.read(buffer)) != -1) {
                out.write(buffer, 0, readCount);
            }
            out.writeInt(100);
            out.writeBytes("Hi This is my world.");
            out.writeDouble(5.5);
        } catch (Exception e) {
            e.printStackTrace();
        } 
    }
}

💡 try-catch-finally E.g.

import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.io.FileInputStream;
import java.io.FileOutputStream;

public class ByteExam2 {
    public static void main(String[] args) {
        DataOutputStream out = null;
        DataInputStream in = null;
        try {
            out = new DataOutputStream(new FileOutputStream("data.txt"));
            in = new DataInputStream(new FileInputStream("src/testScope.java"));
            int readCount = -1;
            byte[] buffer = new byte[512];
            while ((readCount = in.read(buffer)) != -1) {
                out.write(buffer, 0, readCount);
            }
            out.writeInt(100);
            out.writeBytes("Hi This is my world.");
            out.writeDouble(5.5);
        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            try{
                in.close();
            }catch (Exception e){
                e.printStackTrace();
            }
            try{
                out.close();
            }catch (Exception e){
                e.printStackTrace();
            }
        }
    }


}

확실히 try-with-resources 의 코드가 짧은것이 보인다.


DataOutputStream out = new DataOutputStream(new FileOutputStream("data.txt"));
DataInputStream in = new DataInputStream(new FileInputStream("src/testScope.java"));

DataStream 에 file 같이 정확한 부품들을 끼워주면서 어떤 식으로 저장하고 읽어올 것인지 선택할 수 있다.
장식품과 같다.

파일이 아닌 다른 경로로도 불러오고 싶은 경우에 쓸 수 있다.

0개의 댓글