□ 소스 파일 폴더 내에서 '특정 문자'를 가지고 있는 파일 추출하기

 

import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.File;
import.java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.FileReader;
import java.io.IOException;
import java.io.OutputStreamWriter;
import java.text.SimpleDateFormat;
import java.util.ArrayList;

public class FileSearcher{
	
	public static void main(String[] args) throws FileNotFoundException, IOException{
		SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss")
		File inputFile = new File("C:/ClassSearcher.txt");
		//입력 스트림 생성
		FileReader file_reader = new FileReader(inputFile);
		//입력 버퍼 생성
		BufferedReader bufReader = new BufferedReader(file_reader);
		String line = "";
		
		String filePath = "C:/fileObject/src";
		File dir = new File(filePath);
		if(dir.exists() == false){
			System.out.println("경로가 존재하지 않습니다.");
			return;
		}
		
		BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(new FileOutputStream("c:/result.txt")));
		ArrayList<File> files = new ArrayList();
		
		visitAllFiles(files, dir);
		
		//line은 찾아야 하는 문자열
		while(line = bufReader.readLine()) != null){
			for(File f: files){
				FileReader smartFileReader = new FileReader(f.getAbsoluteFile());
				BufferedReader fileBufReader = new BufferedReader(smartFileReader);
				
				Strint smartLine = "";
				
				while(smartLine = fileBufReader.readLine()) != null){
					if(smratLine.contains(line) == true){
						String resultLine = line + "/" + f.getName() + "\n";
						bw.write(resultLine);
					}
				}
			}
			
			System.out.println("Word: " + line);
		}
		
		System.out.println("WORK Finished");
		//탐색한 파일을 하나씰 출력할 파일에 쓴다.
		bw.flush();
		bw.close();
	}
	
	/* 총 파일 수를 arraylist에 추가합니다.
	 * 만약 검색된 부분이 디렉토리라면 하위 폴더를 탐색합니다.
	 */
	public static void visitAllFiles(ArrayList files, File dir){
		if(dir.isDirectory()){
			File[] children = dir.listFiles();
			for(File f : children){
				//재귀 호출 사용
				//하위 폴더 탐색 부분
				visitAllFiles(files,f);
			}
		}else{
			files.add(dir);
		}
	}
	
}	

 

반응형

'■ 관심 사항 > □ 잡동사니' 카테고리의 다른 글

코스톨라니의 달걀 모델  (0) 2020.07.25
채권에 대한 이해하기 쉬운 설명  (0) 2020.07.23
손실 회피 편향  (0) 2020.07.11
부의 3요소 (부란 무엇인가?)  (0) 2020.07.07
통화정책과 재정정책  (0) 2020.06.24
반응형