파일 입출력

zee-chive·2024년 7월 26일

Java

목록 보기
11/12

파일

File 클래스

  • 파일 및 디렉토리를 객체로서 관리
  • 특정 파일 또는 디렉토리에 대응되는 객체를 생성, 정보를 관리하고 조작할 수 있는 다양한 메서드
  • File file = new File("파일 또는 디렉토리의 경로.")
  • 상대 경로 : 현재 프로그램이 실행되는 위치. 경로가 C:\ 나, /로 시작하지 않는다.
  • 절대 경로 : 윈도우의 경우, 드라이브 문자 (C:) , 또는 / 로 시작하면 절대경로
  • 메서드
	public static void main(String[] args) {
		File f = new File("dog.jpg");
		
		System.out.println(f.exists()); // true
		System.out.println(f.isFile());
		System.out.println(f.isAbsolute()); // false
		System.out.println(f.getAbsolutePath()); //C:\Users\SSAFY\eclipse-workspace\Day10\dog.jpg 
		System.out.println(f.length() + "bytes.");
		
		// 파일 뿐만 아니라, 폴더도 적용할 수 있다. 
		File src = new File("src");
		System.out.println(src.exists());
		System.out.println(src.isDirectory());

		File folder = new File("Forder");
		System.out.println(folder.exists());
		System.out.println(folder.mkdir()); // 폴더를 만들어서 boolean 출력 
	}




입출력과 스트림

입출력

  • 데이터의 입력, 출력
  • 데이터 내부 혹은 외부 장치와 데이터를 주고 받는 행위

스트림

  • 데이터를 운반하는데 사용되는 통로
  • 단방향 통신으로만 가능하여, 하나의 스트림을 이용하여 입력과 출력 처리 불가능
  • 노드 : 데이터의 출발지점, 혹은 목적지
  • 데이터 타입에 따른 스트림의 분류

    • 바이트 스트림 : 바이트 단위로 데이터를 받거나 출력하기 위한 스트림 클래스
    • 이진 파일을 읽고 쓰는데 사용
    • 최상위 추상 클래스 : inputStream, OutputSteam

바이트 스트림

inputStream 클래스

  • int read() throws IOException
    • 입력 스트림으로부터 한 바이트의 데이터를 읽음
    • byte를 읽어서 int 형으로 반환
    • 반환값 : 읽은 바이트 혹은 스트림에 도달하면 -1
  • int read(byte[] b) throws IOException
    • 입력 스트림으로부터 데이터를 읽어서 주어진 바이트 배열을 채움.
    • 반환값 : 실제 읽은 바이트 갯수 또는 끝에 도달하면 -1
  • int read(byte[] b, int off, int len) throws IOException
    • 입력 스트림으로부터 주어진 바이트 배열의 b, 특정 off부터 최대 len 길이만큼 바이트를 읽음
    • 반환값 : 실제 읽은 바이트의 개수 또는 끝에 도달하면 -1
  • void close() throws IOException
    • 모든 시스템 자원을 해제
    • 입출력은 운영 체제와 상호 작용하는 것으로, 사용이 끝나면 close 해줘야 한다.
    • 프로그램이 종료가 되면 자동으로 종료가 되지만, 의존하지 않고 닫아줘야 다른 운영체제가 잘 돌아간다.

OutputStream 클래스

  • void write(int b) throws IOException
    • 한 바이트의 출력 스트림에 쓴다.
  • void write(byte[] b) throws IOException
    • 주어진 바이트 배열 b에 저장된 모든 내용을 출력 스트림에 쓴다.
  • void write(byte[] b, int off, int len) throws IOException
    • 주어진 바이트 배열 b의 특정 off 부터 len 개의 길이만큼 출력 스트림에 쓴다.
  • public void flush()
    • 출력 스트림에 버퍼링된 모든 바이트를 출력
  • public void close()
    • 출력 스트림을 닫고 스트림과 관련된 모든 시스템 자원을 반납
    • close()를 진행하면, 내부적으로 flush() 를 호출한다.




문자 스트림

  • 바이트 스트림과 달리, 문자단위로 데이터를 처리한다.
  • 내부적으로 UTF-16 인토딩을 사용하여 문자를 메모리에 저장
  • 주로 키보드에서 입력을 받거나, 텍스트 파일을 읽고 쓰는데 사용

Reader 클래스

  • int read() throws IOException
    • 입력 스트림으로부터 문자 하나를 읽음
    • 반환값 : 읽은 문자를 정수 값으로 반환 혹은 스트림에 도달하면 -1
  • int read(char[] cbuf) throws IOException
    • 입력 스트림으로부터 데이터를 읽어서 주어진 문자 배열을 채움.
    • 반환값 : 실제 읽은 문자 갯수 또는 끝에 도달하면 -1
  • int read(char[] cbuf, int off, int len) throws IOException
    • 입력 스트림으로부터 주어진 문자 배열의 cbuf, 특정 off부터 최대 len 길이만큼 문자 배열을 읽음
    • 반환값 : 실제 읽은 문자 갯수 또는 끝에 도달하면 -1
  • void close() throws IOException
    • 모든 시스템 자원을 해제

Writer 클래스

  • void write(int b) throws IOException
    • 단일 문자를 출력 스트림에 쓴다.
  • void write(char[] cbuf) throws IOException
    • 주어진 문자 배열 cbuf에 저장된 모든 내용을 출력 스트림에 쓴다.
  • void write(char[] cbuf, int off, int len) throws IOException
    • 주어진 문자 배열 cbuf의 특정 off 부터 len 개의 길이만큼 출력 스트림에 쓴다.
  • void write(String str) throws IOException
    • 주어진 문자열 str의 모든 문자를 출력 스트림에 쓴다.
  • void write(String str, int off, int len) throws IOException
    • 주어진 문자열 str의 특정 off 부터 len 개의 길이만큼 출력 스트림에 쓴다.
  • public void flush()
    • 버퍼에 있는 스트림에서 버퍼링된 모든 문자를 출력하고 버퍼를 비운다.
  • public void close()
    • 출력 스트림을 닫고 스트림과 관련된 모든 시스템 자원을 반납
    • close()를 진행하면, 내부적으로 flush() 를 호출한다.

profile
누가 봐도 읽기 쉬운 글이 최고의 글이다.

0개의 댓글