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) { 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 log1 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; 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 log1 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; 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 log1 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; 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 log1 /Users/beanbroker/pkj_private_work/spring_file_work/search_file/test1.txt