본문 바로가기
Back-End/Java

Java(9)

by newny 2023. 3. 23.
반응형

File클래스

java.os 패키지는 파일과 디렉토리 정보를 가지고 있는 File 클래스를 제공함
객체 생성 방법

File file = new File("경로");

 

exists() 메소드

파일이나 폴더가 존재하는지 확인할 수 있음

File file = new File("경로");
Boolean isExist = file.exists();

 

length() 메소드

파일의 크기 리턴 (단위 byte)

File file = new File("경로");
long fileSize = file.length(); //파일크기 리턴 메소드
System.out.println("파일크기 : " + fileSize); // byte
System.out.println("파일크기 : " + fileSize/1024 + "KB"); // KB
System.out.println("파일크기 : " + fileSize/1024/1024 + "MB"); // MB

 

delete() 메소드

  • 파일 삭제 메소드
  • 휴지통으로 보내지지 않고 바로 삭제됨
File file = new File("경로");
Boolean isDelete = file.delete();

 

mkdir(), mkdirs() 메소드

  • make directory 의 줄임말
  • mkdir() → 경로중 마지막 경로만 (디렉토리 또는 파일) 존재하지 않을경우 그 이름으로 새로운 디렉토리를 생성해줌, 중간의 경로가 없을경우엔 새로운 디렉토리를 생성하지 않음
  • mkdirs() → 경로에 없는 디렉토리를 모두 생성해줌

 

isDirectory()

디렉토리인지 여부 확인

File file = new File("경로");
Boolean isThisDirectory = file.isDirectory();

 

isFile()

파일인지 여부 확인

File file = new File("경로");
Boolean isThisFile = file.isFile();

 

입출력 스트림

자바는 입력 스트림과 출력 스트림을 통해 데이터를 입출력함
 

EOF(End of File)

데이터 소스로부터 더이상 읽을 수 있는 데이터가 없음을 나타냄
 

바이트 스트림

  • 그림, 멀티미디어, 문자 등 모든 종류의 데이터를 입출력할 때 사용
  • byte단위(1byte)로 입출력
  • InputStream, OutputStream

 

FileInputStream

String fileName = "data.txt"; //절대경로 주지않으면 현재경로에서 찾음
FileInputStream fis = null; //try-catch문 사용으로 인해 외부에 선언해야함

try {
    fis = new FileInputStream(fileName); //파일 가져오기
    while(true) {
        int data = fis.read(); //1byte 단위로 읽어옴(한글깨짐)
        if (data == -1) { //EOF -1 리턴
            break; //반복문 해제
        }
        System.out.printf("%c", data); //char로 출력했을 경우 -> 한글 깨져서 출력됨
    }
} catch (Exception e) {
    System.out.println(e);
} finally {
    // 자원반납
    try {
        if (fis != null) {fis.close();}
    } catch (Exception e) {}
}

 

문자 스트림

  • 문자만 입출력할 때 사용
  • char단위(2byte)로 입출력
  • Reader, Writer

 

FileReader

String fileName = "data.txt"; //절대경로 주지않으면 현재경로에서 찾음
FileReader fr = null; //try-catch문 사용으로 인해 외부에 선언해야함

try {
    fr = new FileReader(fileName); //파일 가져오기
    while(true) {
        int data = fr.read(); //2byte 단위로 읽어옴
        if (data == -1) { //EOF -1 리턴
            break; //반복문 해제
        }
        System.out.printf("%c", data); //char로 출력했을 경우 -> 한글 깨지지 않고 출력됨
    }
} catch (Exception e) {
    System.out.println(e);
} finally {
    // 자원반납
    try {
        if (fr  != null) {fr.close();}
    } catch (Exception e) {}

 

보조 스트림

다른 스트림과 연결되어 여러가지 편리한 기능을 제공해주는 스트림
InputStreamReader : 바이트 스트림을 문자 스트림으로 변환
Buffered- : 입출력 성능 향상
Data- : 기본 타입 데이터 입출력
Print- : 줄바꿈 처리 및 형식화된 문자열 출력
Object- : 객체 입출력
 

BufferedReader

입력 성능 향상
엔터(\n)를 기준으로 한줄씩 읽어옴

String fileName = "data.txt"; //절대경로 주지않으면 현재경로에서 찾음
FileReader fr = null; //try-catch문 사용으로 인해 외부에 선언해야함
BufferedReader br = null; //try-catch문 사용으로 인해 외부에 선언해야함

try {
    fr = new FileReader(fileName); //파일 가져오기
    br = new BufferedReader(fr); //보조 스트림에 넣기

    while(true) {
        String line = br.readLine(); //엔터(\\n)를 기준으로 한줄씩 가져오기
        if (line == null) { //EOF null 리턴
            break; //반복문 해제
        }
        System.out.printf("%c", line);
    }
} catch (Exception e) {
    System.out.println("파일 읽기 실패 : " + e);
} finally {
    // 자원반납
    try {
        if (br != null) {br.close();} //바깥 스트림부터 닫기
    } catch (Exception e) {}
    try {
        if (fr != null) {fr.close();}
    } catch (Exception e) {}
}

 

PrintWriter

줄바꿈 처리 및 형식화된 문자열 출력

String fileName = "d:/java202301/sungjuk.txt";
FileWriter fw = null;
PrintWriter out = null;
try {
    // append true -> 추가, false -> 덮어쓰기
    fw = new FileWriter(fileName, true);
    //autoFlush true -> 버퍼를 청소하면서 사용
    out = new PrintWriter(fw, true);

    // oop0313.Test07_format.java참조
    // System.out.println(); 콘솔창에 출력
    // out.println(); 해당 파일에 출력
    out.println("무궁화,95,90,100");
    out.println("홍길동,100,100,100");
    out.println("라일락,90,95,35");
    out.println("개나리,85,70,75");
    out.println("진달래,35,40,60");

    System.out.println("sungjuk.txt 데이터 파일 완성");

} catch (Exception e) {
    System.out.println("파일 쓰기 실패");
    e.printStackTrace();
} finally {
		// 자원반납
    try {
        if (out != null) {out.close();} //바깥 스트림부터 닫기
    } catch (Exception e) {}
    try {
        if (fw != null) {out.close();}
    } catch (Exception e) {}
}
반응형

'Back-End > Java' 카테고리의 다른 글

Java 과제 - 성적표 파일 입출력  (0) 2023.03.23
Java(8)  (0) 2023.03.22
Java(7)  (0) 2023.03.21

댓글