본문 바로가기
Java

[JAVA] File 객체를 이용한 폴더내 파일 검색 3가지 방법

by Dokon Jang 2021. 2. 9.
반응형

폴더내의 파일 또는 폴더 목록을 갖고 올 수 있는 3가지 방법입니다.

소스는 간단하니 필요에 따라서 3가지 방법 중 하나를 선택하면 될 듯 합니다.

Win으로 시작하는 모든 파일 찾기 예제입니다.

 

1.  public File[] listFiles() 

import java.io.File;

public class FileListSample {

	public static void main(String[] args) {
		String dirPath = "C:\\Windows\\System32";
		
		File dir = new File(dirPath);
		File[] files = dir.listFiles();
		for(File f : files) {
			if(f.isFile() && f.getName().toUpperCase().startsWith("WIN")) {
				System.out.println(f.getName());
			}
		}
	}
}

 

2. public File[] listFiles(FilenameFilter filter)

  - FilenameFilter를 사용 할 경우 파일인지 폴더인지 구분이 안되어서 File 객체를 만들어서 확인이 필요합니다.

import java.io.File;
import java.io.FilenameFilter;

public class FileListSample {

	public static void main(String[] args) {
		String dirPath = "C:\\Windows\\System32";
		
		File dir = new File(dirPath);
		File[] files = dir.listFiles(new FilenameFilter() {
			@Override
			public boolean accept(File dir, String name) {
				if(name.toUpperCase().startsWith("WIN")) {
					File f = new File(dir, name);
					return f.isFile();
				}
				
				return false;
			}
		});
		
		for(File f : files) {
			System.out.println(f.getName());
		}
	}
}

 

3. public File[] listFiles(FileFilter filter)

  - FileFilter를 이용할 경우 accept에 아규먼트가 File 객체여서 조금 더 간편하게 사용이 가능하네요.

import java.io.File;
import java.io.FileFilter;
import java.io.FilenameFilter;

public class FileListSample {

	public static void main(String[] args) {
		String dirPath = "C:\\Windows\\System32";
		
		File dir = new File(dirPath);
		File[] files = dir.listFiles(new FileFilter() {
			
			@Override
			public boolean accept(File file) {
				if(file.isFile() && file.getName().toUpperCase().startsWith("WIN")) {
					return true;
				}else {
					return false;					
				}
			}
		});
		
		for(File f : files) {
			System.out.println(f.getName());
		}
	}
}
반응형

댓글