어쩌다 개발자

[Java] 해당 확장자 파일 라인 수 읽어오기 본문

Back-end/Java

[Java] 해당 확장자 파일 라인 수 읽어오기

I_am_Nabi 2021. 4. 9. 16:12

사건의 전말

우리 대장님 : mapper에 있는 sql들이 총 몇 줄 인지 파일별로 가져올 수 있나?

나 : ㅇㅁㅇ!!!!!

 

(나한테 말하셨지만 선배가 이 일을 가져가긴 했거든요...

근데 나 황씨 가문 29대손 21세기 신입 개발자로써 예제코드를 만들어두면 언젠간 쓰겠지 싶어서 작업했어요.....ㅎ)

 

조건

1. 파일의 위치는 알지만 파일이 몇개인지는 모른다.

2. 폴더 내부에 하위 폴더가 있다.

3. JDK 1.6 이다!!!!!!

(사실 이것만 아니었어도 빨리 끝났을거야..... 왜냐면 JDK 1.8버전의 예시코드는 아주 아주 많았거든요....)

 

코딩 시작

package com.java.ex;

import java.io.BufferedReader;
import java.io.File;
import java.io.FileReader;
import java.io.Reader;

public class Test {

	public static void main(String[] args) throws Exception {

		String folderPath = "D:\\workspace\\Project\\src\\main\\resources\\mybatis\\mapper";
		
		fileReader(folderPath);
	}

	private static void fileReader(String folderPath) throws Exception {
		// 파일 경로 특수문자를 File.separator 로 바꾸기
		folderPath.replace("\\", File.separator).replace("/", File.separator);
		
		File dir = new File(folderPath);	// 해당 폴더 가져오기
		File[] fileArr = dir.listFiles();	// 해당 폴더의 파일명 전체 읽기
		
		String format = "";				// 파일 확장자명 넣어줄 String
		
		Reader r;
		BufferedReader br;

		int line = 0;
		
		if(dir.canRead()) {
			for(File f: fileArr) {
				format = f.getName().substring(f.getName().lastIndexOf(".") + 1);
				
				// 읽을 수 있지 && 파일인지 && 확장자가 xml인지 확인
				if(f.canRead() && f.isFile() && "xml".equals(format)) {
					r = new FileReader(folderPath+File.separator+f.getName());
					br = new BufferedReader(r);
					
					while(true) {
						if (br.readLine() == null) {
							break;
							
						}else {
							line++;
						}
					}
					System.out.println("|"+f.getName() +" | "+ line + "줄"+" | ");
					
					br.close();
					r.close();
					
				}else if(f.canRead() && f.isDirectory()) {
					// 읽을 수 있지만 파일이 아니라 디렉토리인 경우
					// 본인을 호출하여 다시 메소드 실행
					fileReader(folderPath+File.separator+f.getName());
				}
			}
		}
	}
}

저는 Exception으로 퉁쳐서 상위로 던져버렸지만,
실무에서 쓰려면 try~catch 로 잡아서 사용해야합니다!!
(저두 글 게시만 하구 가서 수정할거에여)

 

JDK 1.8 예제 코드에서는 Files.llines().count(); 를 써서 라인 수를 구하던데

JDK 1.6은 아무리 API를 뒤져도 안나와서 걍 노가다를 해씀다...

 

JDK 1.6으로 이쁘게 코드 작성하신 분 혹시 계신가요.....

불쌍한 중생 살려주신다 생각하시구 댓글 부탁드립니닷❤

'Back-end > Java' 카테고리의 다른 글

[Java] CLOB => STRING 으로 변환 예시  (0) 2021.03.03
[Java] 자바 쓰레드(thread)  (0) 2021.01.28
List<Object> / List<?> 차이점  (0) 2021.01.21
[Java] 내부 클래스의 종류  (0) 2021.01.02
[Java] 조건문: if문, switch문  (0) 2021.01.02