Java File Walk

Java File Walk를 활용해보자

git source 소스 링크

1. 자신의 워킹디렉토리를 알아보자

자신의 워킹디렉토리를 알아보는 방법

1
2
3
4
public String getWorkingDirectory(){

return System.getProperty("user.dir");
}

2. 타켓 하위 디렉토리 아래 모든 파일 가져오기

목표로 하는 폴더 생성 후 해당 폴더안에 test1.txt, test2.txt, test3.txt 파일 생성 등등 목표 디렉토리 안에 파일 생성

  • 타켓 디렉토리 밑에있는 모든 파일 가져오기
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28


public static void main(String[] args) {

//2. 해당 하위 디렉토리 아래 모든 파일 가져오기
String searchFileFolder = "search_file";
String targetDirectory = getWorkingDirectory()+"/" + searchFileFolder;
List<String> allFiles = getAllFiles(targetDirectory);

allFiles.forEach(System.out::println);

}



public static List<String> getAllFiles(String targetPath) {

try (Stream<Path> walk = Files.walk(Paths.get(targetPath))) {

return walk.filter(Files::isRegularFile)
.map(Path::toString).collect(Collectors.toList());


} catch (IOException e) {
e.printStackTrace();
}
return null;
}

console log

1
2
3
4
5
/Users/beanbroker/pkj_private_work/spring_file_work/search_file/.DS_Store
/Users/beanbroker/pkj_private_work/spring_file_work/search_file/test1.txt
/Users/beanbroker/pkj_private_work/spring_file_work/search_file/test2.txt
/Users/beanbroker/pkj_private_work/spring_file_work/search_file/test3.txt
/Users/beanbroker/pkj_private_work/spring_file_work/search_file/testFolder3/test1 복사본.txt

위와같이 목표하는 폴더 밑의 모든 파일들을 들고온다.

3. 타켓 하위 디렉토리 아래 모든 폴더 가져오기

동일하게 타멧 디렉토리 안에 원하는 만큼 폴더를 생성하자

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26

public static void main(String[] args) {

String searchFileFolder = "search_file";
String targetDirectory = getWorkingDirectory() + "/" + searchFileFolder;

//3. 해당 하위 디렉토리 아래 모든 폴더 가져오기
List<String> allFolders = getAllFolders(targetDirectory);
allFolders.forEach(System.out::println);


}

public static List<String> getAllFolders(String targetPath) {

try (Stream<Path> walk = Files.walk(Paths.get(targetPath))) {

return walk.filter(Files::isDirectory)
.map(Path::toString).collect(Collectors.toList());


} catch (IOException e) {
e.printStackTrace();
}
return null;
}

console log

1
2
3
4
/Users/beanbroker/pkj_private_work/spring_file_work/search_file
/Users/beanbroker/pkj_private_work/spring_file_work/search_file/testFolder1
/Users/beanbroker/pkj_private_work/spring_file_work/search_file/testFolder2
/Users/beanbroker/pkj_private_work/spring_file_work/search_file/testFolder3

결과는 위와 같이 정상적으로 잘노출된다.

4. 해당 하위 디렉토리 아래 목표로하는 확장자 파일들가져오기

동일하게 타멧 디렉토리 안에 원하는 만큼 폴더를 생성하자

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26

public static void main(String[] args) {

String searchFileFolder = "search_file";
String targetDirectory = getWorkingDirectory() + "/" + searchFileFolder;

//4. 해당 하위 디렉토리 아래 목표로하는 확장자 파일들가져오기
String targetFileExtension = "txt";
List<String> allFilesUnderFolders = getAllFilesWithFileExtension(targetDirectory, targetFileExtension);
allFilesUnderFolders.forEach(System.out::println);

}

public static List<String> getAllFilesWithFileExtension(String targetPath, String extension) {

try (Stream<Path> walk = Files.walk(Paths.get(targetPath))) {

return walk.map(Path::toString)
.filter(f -> f.endsWith(extension)).collect(Collectors.toList());


} catch (IOException e) {
e.printStackTrace();
}
return null;
}

console log

1
2
3
4
/Users/beanbroker/pkj_private_work/spring_file_work/search_file/test1.txt
/Users/beanbroker/pkj_private_work/spring_file_work/search_file/test2.txt
/Users/beanbroker/pkj_private_work/spring_file_work/search_file/test3.txt
/Users/beanbroker/pkj_private_work/spring_file_work/search_file/testFolder3/test1 복사본.txt

결과는 위와 같이 목표로 하는 확장자 파일들이 정상적으로 잘노출된다.

5. 해당 하위데릭토리에서 원하는 파일 찾기

동일하게 타멧 디렉토리 안에 원하는 만큼 폴더를 생성하자

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28

public static void main(String[] args) {

String searchFileFolder = "search_file";
String targetDirectory = getWorkingDirectory() + "/" + searchFileFolder;

//5. 해당 하위데릭토리에서 원하는 파일 찾기
String targetFileName = "test1.txt";
List<String> tatgetFile = findFileUnderTargetFolder(targetDirectory, targetFileName);
tatgetFile.forEach(System.out::println);

}

public static List<String> findFileUnderTargetFolder(String targetPath, String fileName) {

try (Stream<Path> walk = Files.walk(Paths.get(targetPath))) {


return walk.map(Path::toString)
.filter(f -> f.contains(fileName))
.collect(Collectors.toList());


} catch (IOException e) {
e.printStackTrace();
}
return null;
}

console log

1
/Users/beanbroker/pkj_private_work/spring_file_work/search_file/test1.txt