[JAVA] 파일 입출력

김윤섭·2023년 2월 8일
0

JAVA

목록 보기
27/27
post-thumbnail

(1) java.io.File

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

📌 C:\photo\food.jpg 파일에 대한 객체 생성


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

(2) 운영체제별로 파일을 다루는 경로

  • 윈도우 기반 : \
  • 리눅스 기반 : /
  • 운영체제들간의 호환성을 위해 /로 통일

(3) 절대경로 vs 상대경로

- 절대경로

  • 작업 디렉토리와 관계없이 절대적인 위치
  • 윈도우 예시 : C:/Windos/System32/drivers/etc/hosts
  • 리눅스 예시 : /etc/httpd/conf/httpd.conf

- 상대경로

  • 작업 디렉토리를 기준으로 상대적인 위치를 의미
  • 윈도우 예시 : ./conf/httpd.conf
  • 리눅스 예시 : ../drivers/etc/hosts

(4) 파일 클래스 예시

- 파일 객체 생성

File f1 = new File("src/file/Main01.java");

- 파일인지 검사

boolean is_file = f1.isFile();
System.out.println("isFile = " + is_file);

- 디렉토리(폴더)인지 검사

boolean is_dir = f1.isDirectory();
System.out.println("isDirectory = "+ is_dir);

- 숨긴형태인지 검사(존재 여부, 숨긴 여부 동시 검사 가능)

boolean is_hidden = f1.isHidden();
System.out.println("isHidden = " + is_hidden);

- 절대경로값 추출

String abs = f1.getAbsolutePath();
System.out.println("절대 경로 = " + abs);

물리적으로 존재 여부 검사

boolean is_exist = f1.exists();
System.out.println("존재여부 = " + is_exist);

- 폴더 만들기

  • 디렉토리 정보 객체 생성
File f2 = new File("a/b/c/target");

경로에 따른 디렉토리 생성

	f2.mkdirs();
    
    //생성됐는 지 확인
    System.out.println("절대 경로 : "+ f2.getAbsolutePath()); 

- 경로 마지막 "/"이후 단어 리턴

System.out.println(f1.getName());

- 경로 마지막 "/"직전까지 리턴

System.out.println(f1.getName());

💡 결과

isFile = true
isDirectory = false
isHidden = false
절대 경로 = D:\gb_hbr\java\workspace\day11\src\file\Main01.java
존재여부 = true
--------------------------
절대 경로 : D:\gb_hbr\java\workspace\day11\a\b\c\target
--------------------------
Main01.java
src\file

(5) 문자 인코딩(character encoding)

  • 문자나 기호들의 집합을 컴퓨터에서 저장하거나 통신에 사용할 목적으로 부호화 하는 방법
    cf) 모스부호
    - UTF-8 : 8비트 이진수로 표현하는 방법

(6) 스트림이란?

  • 입출력에서 stream이란 디바이스 입출력 방식이 character 단위이든 block단위이든 관계없이 "1바이트"씩 "연속"적으로 전달되는 형태로 추상화된 상태

  • 입출력 장치는 개별적인 특성이 있으므로 읽고, 쓰는 단위가 각각 다르지만, 스트림은 이러한 일련의 과정을 형상화하여 모든 디바이스를 character 단위로만 사용(문자 단위)

  • 즉, 입출력 디바이스의 특성을 무시하고 하나의 단일한 입출력 인터페이스로 다룰 수 있도록 하는 것이 stream

(7) 자바의 스트림 관련 클래스

  • InputStream : 입력/읽기
  • OutputStream : 출력/저장

(8) 파일 입출력 예시

(입력중)

profile
안녕하세요

0개의 댓글