저번 시간에 디렉토리 목록을 나열을 해 봤습니다.

오늘은 디렉토리의 목록을 전부가 아니라 필요한 목록만 보여주는 기능을 해보겠습니다.

 

저번 시간에 디렉토리 전체 목록을 보기위해서는 아래와 같은 형식을 하였습니다.

  Files.newDirectoryStream(파일 패스, 패턴);


파일 패스는 저번에 사용 해봤기 때문에 건너뛰고, 패턴에 대해서 알아보도록 하겠습니다.

패턴은 도스명령어 dir사용법 하고 똑같다고 보면 됩니다.

dir명령을 사용 할때 java파일만 검색할때 dir *.java와 같이 사용합니다.

또는 dir a*.*와 같이 사용도 합니다.

코딩으로 적용 시키면 아래와 같습니다.

ex1)  Files.newDirectoryStream(파일 패스, "*.java");

ex2)  Files.newDirectoryStream(파일 패스, "a*.*");

ex3)  Files.newDirectoryStream(파일 패스, "*.{png, java, exe}");



ex3과 같이 확장자를 {}에 넣어 사용 할 수 도 있습니다.


다음은 샘플 소스 입니다. 저번 시간에 사용한 소스에 추가만 해보겠습니다.

[샘플 소스]

import java.io.IOException;
import java.nio.file.DirectoryStream;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;
 
 
public class NioSample2 {
 
	/**
	 * @param args
	 */
	public static void main(String[] args) {
		// TODO Auto-generated method stub
 
		Path path = Paths.get("D:/nio2");
 
		System.out.println(path.getFileName()+"  폴더 내용  리스트");
		System.out.println("----------------------------------");
 
		DirectoryStream<Path> dir = null;
		try {
			dir = Files.newDirectoryStream(path, "*.{png, exe}");
			for (Path file : dir) {
				System.out.println(file.getFileName());
			}
		} catch (IOException e) {
			e.printStackTrace();
		} finally {
			try {
				if (dir != null) {
					dir.close();
				}
			} catch (IOException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
		}
 
	}
}



[실행 결과]

fileList2.PNG


D:\nio2폴더 내용

nio2folder.PNG



실행 결과를 보면 아시겠지만 패턴대로 확장자가 png,exe파일 목록만 표시 됩니다.

하지만 하위 디렉토리안에 있는 목록은 찾지를 못합니다.


다음시간은 nio2폴더 밑에 있는 하위 디렉토리까지 검색해 목록을 표시해 보도록 하겠습니다.

감사합니다.