ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • (JAVA) 자바 파일(File) 객체 입력 &출력 관련 메소드
    JAVA/컨셉 , 예제 2018. 8. 24. 13:45

    자바 콘솔 프로그램에서는 재귀 프로그램을 접할 일이 많다고 한다. 그중 가장 큰 이유가 파일 탐색 및 제어에 있다. 오늘은 파일 객체 입력 & 출력 메소드 사용 방법에 대해 포스팅.

    1. 바탕화면에 newfolder 생성

    2. newfolder 내부에 다음과 같이 폴더 생성.

    3. java 폴더 안에 다음과 같이 폴더 및 텍스트 파일 생성

    4. java 폴더의 빨간 박스 클릭해 경로 복사해 다음과 같이 코드 작성한다.


    모든 파일을 탐색하는 프로그램을 작성하는 절차는 다음과 같다.

    객체 생성 방법 : File 파일명 = new File(파일 경로); // 파일 경로는 String

    주요 메소드 및 파일 탐색 절차
    isDirectory() : 폴더인 경우 true, 파일인 경우 false 리턴
    list() : 파일 객체 내부의 파일명을 String 배열로 리턴
    File.separator : 운영체제(리눅스,맥 / 윈도우즈)에 따른 파일 구분자 문자열로 리턴. 
    리눅스, 맥 파일 구분자 : "/"
    윈도우즈 파일 구분자 : "\\"
    getAbsolutePath() : 파일 객체의 절대경로 String 형태로 리턴

    모든 파일 탐색 절차

    1. 탐색하고 싶은 파일의 경로를 통해 파일 객체 생성.
    2. isDirectory 함수 통해 해당 객체가 디렉토리인지 파일인지 확인
    2-1) 파일인 경우 : 파일명 출력
    2-2) 폴더인 경우 : 해당 객체의 경로에 File.seperator와 폴더명 더한 String 객체를 매개변수로 파일 객체 생성 이후 2의 과정 반복

    포인트는 2-2)의 경우 1부터의 과정을 반복해야 한다는 점이다. 이를 위해 재귀함수 호출을 사용이 불가피해진다. 재귀적함수를 이용한 코드는 다음 포스팅 때 작성하도록 하고 일단 메소드의 사용법에 대해 포스팅.

    package blog.naver.com.test; import java.io.File; public class FileTest { public static void main(String[] args) { String folderPath = "C:\\Users\\Admin\\Desktop\\newfolder"; // 파일의 경로. 윈도우의 경우 파일 구분자 : \\ // 맥, 리눅스의 경우 파일 구분자 : / File filePath = new File(folderPath); if(filePath.isDirectory()){ System.out.println(filePath.getPath() + "는 폴더입니다."); } else System.out.println(filePath.getPath() + "는 파일입니다."); File javaFolder = new File(filePath.getAbsolutePath()+File.separator+"java"); if(javaFolder.isDirectory()){ System.out.println(javaFolder.getAbsolutePath()+"는 디렉토리입니다."); }else{ System.out.println(javaFolder.getAbsolutePath()+"는 파일입니다."); } String[] contents = javaFolder.list(); for(String content : contents){ System.out.println(content); } } }

    ※ 4에서 복사한 경로를 folderPath에 넣는 게 포인트. 

    탐색하고 싶은 파일의 경로를 String에 저장하는 역할

    5. 실행 결과.
    폴더가 파일인지 폴더인지 구분한 결과 및 C:\Users\Admin\Desktop\newfolder\java 경로에 있는 파일들을 for each로 출력.

Designed by Tistory.