본문 바로가기
Back-end/JAVA & Spring

[Java] java.io.File 주요 메소드

by 꼬바리 2021. 5. 11.

[ File  클래스 ]

  • 파일 내용이 아닌, 파일 자체(껍데기)를 다룸
  • NIO2만으로는 파일 조작이 어려워 병행해서 사용하면 효율적
  • NIO2와 서로 변환할 수 있음

파일 클래스를 사용하면 파일 스트림을 열기 전에 실제 파일에 대한 정보를 확인할 수 있고, 또 파일 자체를 삭제하거나 이름을 변경하는 등의 작업을 수행할 수 있습니다.

 

데이터 입출력에 대한 기본 개념은 아래 링크글을 참조하시면 됩니다.

2019/12/16 - [JAVA/기본 문법] - 외부 데이터 입출력_io / nio / nio2 [1/3]

2019/12/16 - [JAVA/기본 문법] - 외부 데이터 입출력_java.io [2/3]

2019/12/16 - [JAVA/기본 문법] - 외부 데이터 입출력_java.nio [3/3]

 

 


 

[ 생성자 ]

  • new File(File parent, String child) : 상위 주소와 파일 이름(또는 디렉토리)
  • new File(String pathname) : 상위 주소
  • new File(String parent, String child) : 상위 주소와 파일 이름(또는 디렉토리)
  • new File(URI uri) : 파일의 uri 주소

 

boolean exists() - 파일이 실제 존재하는지 판단
boolean isDirectory() - 디렉토리인지 판단
boolean isFile()  - 파일인지 판단
boolean canRead() - 파일이 읽기 가능한지 판단
boolean canWrite() - 파일이 쓰기 가능한지 판단
boolean canExecute() - 파일이 실행 가능한지 판단
boolean isHidden() - 파일이 숨김파일인지 판단
int length() - 파일의 길이(byte) 반환

 

 

package study.first;

import java.io.File;

public class Main {
	public static void main(String[] args) {

		// 파일의 주소 및 파일명을 가진 file 객체 생성
		// input.txt : "Hello World..!!"
		File file = new File("C:\\JAVA\\FirstStudy\\FisrtStudy\\input.txt");

		System.out.println(file.exists());      // true
		System.out.println(file.isDirectory()); // false
		System.out.println(file.isFile());      // true
		System.out.println(file.canRead());     // true
		System.out.println(file.canWrite());    // true
		System.out.println(file.canExecute());  // true
		System.out.println(file.isHidden());    // false
		System.out.println(file.length());      // 15
	}
}

 


 

boolean renameTo(File dest) - 경로가 같으면 이름 변경, 경로가 다르면 이름 바뀌면서 해당 경로로 이동됨
boolean delete() - 파일 삭제
boolean mkdir() - 생성자에 넣은 경로에 맞게 폴더 생성
boolean createNewFile() - 생성자에 넣은 경로 및 파일명에 맞게 파일 생성

 

 

package study.first;

import java.io.File;

public class Main {
	public static void main(String[] args) {

		try {
			File dir = new File("C:\\JAVA\\FirstStudy\\FisrtStudy\\newforder");
			dir.mkdir(); // 폴더 생성

			File file = new File(dir, "input2.txt");
			file.createNewFile(); // 파일 생성

			File file2 = new File("input3.txt");
			file.renameTo(file2); // 경로가 다르므로 파일 이름 변경 및 이동 수행

		} catch (Exception e) {
			System.out.println("파일 및 폴더 생성에 실패했습니다.");
		}
	}
}

 


 

boolean setReadable(treu/false)  - 읽기 권한 설정
boolean setWritable(true/false)  - 쓰기 권한 설정
boolean setExecutable(true/false)  - 실행 권한 설정

 

 

package study.first;

import java.io.File;

public class Main {
	public static void main(String[] args) {

		try {
			
			File file = new File("input3.txt");
			file.setReadable(false);
			file.setWritable(false);
			file.setExecutable(false);

		} catch (Exception e) {
			System.out.println("파일 및 폴더 생성에 실패했습니다.");
		}
	}
}

 


 

String getPath() - 파일 또는 디렉토리의 상대 경로 추출 (생성자로 준 경로 반환)
String getAbsolutePath() - 파일 또는 디렉토리의 절대 경로 추출 (생성자 관계없이 절대 경로 반환)
File getAbsoluteFile() - 절대 경로를 가지는 File 객체 생성
String getParent() - 현재 파일의 상위 경로 추출 (생성자에서 제공했을 경우)
File getParentFile() - 현재 파일의 상위 경로를 가진 File 객체 생성 (생성자에서 제공했을 경우)

 

 

package study.first;

import java.io.File;

public class Main {
	public static void main(String[] args) {

		try {
			
			File file = new File("input3.txt");
			
			System.out.println(file.getPath()); // "input3.txt"
			System.out.println(file.getAbsolutePath()); // 전체 주소 출력
			System.out.println(file.getAbsoluteFile()); // 전체 주소 출력(File 객체 생성)
			System.out.println(file.getParent()); // 생성자에  Parent주소 없으므로 null
			System.out.println(file.getParentFile()); // 생성자에 Parent주소 없으므로 null

		} catch (Exception e) {
			System.out.println("파일 및 폴더 생성에 실패했습니다.");
		}
	}
}

 


 

String[] list() - 현재 경로의 파일 또는 디렉토리 목록 추출
File[] listFiles() - 현재 경로의 파일 또는 디렉토리를 가지는 File 타입 배열 추출

File 인스턴스가 파일이 아닌 경로를 가지고 있을 때 해당 경로에 존재하는 파일 및 폴더의 정보를 배열에 담아줍니다. 파일 정보까지 가지고 있을 때는 예외가 발생됩니다.

 

 

package study.first;

import java.io.File;

public class Main {
	public static void main(String[] args) {

		try {
			
			File file = new File("C:\\JAVA\\FirstStudy\\FisrtStudy");

			String[] arr = file.list();
			
			for(String a : arr)
				System.out.println(a);	// 폴더 내 모든 파일과 디렉토리 정보	

		} catch (Exception e) {
			System.out.println("파일 및 폴더 생성에 실패했습니다.");
		}
	}
}

 

예외 발생을 피하고 싶으면 isDiretory() 메소드를 이용해 조건문으로 써주면 됩니다.

 

package study.first;

import java.io.File;

public class Main {
	public static void main(String[] args) {

		File file = new File("C:\\JAVA\\FirstStudy\\FisrtStudy\\input.txt");

		// "디렉토리 정보라면"
		if (file.isDirectory()) {
			String[] arr = file.list();

			for (String a : arr)
				System.out.println(a); // 폴더 내 모든 파일과 디렉토리 정보
			
		} else {
			
			System.out.println("File 객체가 폴더가 아닙니다.");
		}
	}
}

 

 

출처 :codevang.tistory.com/159?category=827592

728x90
반응형

댓글