국비 학원 Day 11 - 01 / 파일 입출력

이상기·2023년 2월 9일

국비학원 - JAVA

목록 보기
23/23

파일 입출력

말 그대로 파일의 입력과 출력에 관한 것이다. 이것을 관리하는 클래스는 java.io.File 이다

Java.io.File

File 클래스는 파일 또는 폴더에 대한 정보를 제공하는 클래스로 정보를 조회하고자 하는 파일이나 폴더의 경로에 대한 문자열을 생성자 파라미터로 전달하는 형태로 만들 수 있다. 이 때 파라미터로 전달되는 경로가 실제로 존재하지 않더라도 File 객체의 생성이 가능하다.

File 객체 생성법

File file = new File("C:/photo/food.jpg");
File file = new FIle("C:/photo","food.jpg");

아래나 위나 결국 만들어지는 것은 똑같다.

하지만 여기서 궁금증이 발생한다. 우리의 PC에서 디렉토리는 '\' 으로 단계를 구분한다. 하지만 여기서 그렇지 않게 하는 이유는 윈도우 기반에서야 '\'을 사용하지만 다른 OS의 경우 이 것이 이스케이프 문자를 가리키기에 가급적 호환성을 위해서 '/'를 사용해주어야 한다.

절대 경로와 상대 경로

  • 절대 경로는 작업 디렉토리의 위치와 관계없이 언제나 같은 위치를 의미하는 경로

    Window에선 C: 으로 표현이 가능하며, 리눅스에선 / 으로 표현이 가능하다.

  • 상대 경로는 작업 디렉토리의 위치를 기준으로 다른 파일들을 가리키는 경로

    윈도우와 리눅스 둘 다 ./ ../ 으로 표현이 가능하다.

문자 인코딩(Character encoding)

문자나 기호들의 집합을 컴퓨터에서 저장하거나 통신에 사용할 목적으로 부호화 하는 방법으로 생각보다 다양한 문자 인코딩의 방식들이 있다. 그 중 우리가 자주 사용하는 UTF-8은 8비트를 2진수로 표현한 것이다.

Stream

입출력에서 stream이란 디바이스의입출력 방식이 character 단위이든 block 단위이든 관계 없이 "1바이트"씩 "연속" 적으로 전달되는 형태로, 추상화된 상태를 의미한다. 입출력 장치는 개별적인 특성이 있으므로 읽고, 쓰는 단위가 각각 다르지만, 스트림은 이러한 일련의 과정을 추상화하여 모든 디바이스를 character 단위로만 사용하도록 한다. 즉, 입출력 디바이스의 특성을 무시하고 하나의 단일한 입출력 인터페이스로 다룰 수 있도록 하는 것이 stream이다.

자바의 스트림 관련 클래스

파일 입출력 관련 클래스들은 각각 InputStream(입력/읽기), OutputStream(출력/저장)과 관련된 인터페이스를 상속받기 때문에 모두 동일한 메서드를 가지고 있다.

profile
DBA가 되고싶은 사람입니다

0개의 댓글