본문 바로가기
IT/Java

[JAVA] 자바 파일입출력, 폴더 내 파일 읽기 예제

by 스터딩아재 2021. 8. 23.
반응형

 

* 파일 읽기, 파일 복사, 파일 쓰기, 폴더 내 파일 읽기, FileReader, FileWriter, BufferedReader, BufferedWriter

 

* java 기본 기능으로 파일 내용을 읽고, 새로운 파일에 쓰는 방법 작성 

  (작성 후 ctrl+o로 자동 import 필수)

* 로컬에서 실행하는 로컬 폴더 기준으로 작성 (서버에서 실행 시 path를 서버 폴더 path로 해야 함)

 

* 특정 폴더 내 특정 문자열이 포함되지 않은 파일 찾기, 특정 문자열 2개 포함된 파일 찾기 등 아주 가끔 쓰긴 함.

   ex) <meta ="naver"> 가 없는 파일 찾기, include 가 2개 이상 들어간 파일 찾기

 

 

1. 자바 프로젝트 생성 및 test.java 파일 생성

* eclipse > File 탭 > New > Other > Java > Java Project 생성

* src 내 자바파일 생성

* 소스는 try catch로 묶자 

 

try {
	// 아래 내용
}catch(Exception e){
	e.printStackTrace();
}finally{
}

 

 

2. 읽을 파일 SET

1) 특정 1개 파일 읽기

String path = "C:\\dev\fileSearch\\";
String fileNm = "FileSearch.xml";

// 파일 객체 생성
File file = new File(path + fileNm);

 

 

2) 폴더 내 파일 모두 읽기

String path = "C:\\dev\fileSearch\\";

// 폴더 내 파일 객체 배열 생성
File folder = new File(path);           
File[] fileList = folder.listFiles();

 

* 폴더 내 파일 검색일 경우, 아래 내용을 객체 배열의 for문 안에 작성하면 된다.

for( File file : fileList ){
	if( file.isFile() && file.canRead() ){ // 파일이 파일인지? && 읽을 수 있는지?
    	// 아래 내용
    }
}

 

 

3. 파일 읽기 (FileReader/BufferedReader)

// 파일 입력스트림 생성
FileReader fileReader = new FileReader(file);
// 입력 버퍼 생성
BufferedReader bufferedReader = new BufferedReader(fileReader);

// 읽기 수행
String line = "";
String result = "";
int cnt = 0;
while( (line = bufferedReader.readLine()) != null ){ // 파일 내 문자열을 1줄씩 읽기 while
	if( line.contaions("찾을 문자열") ){ // 찾고자하는 문자열이 있을 때 작성
    	result += line + "\n"; // 한줄씩 읽어 결과에 추가
        cnt++; // 찾을 문자열이 몇개 포함되었는지 체크
    }
}

 

 

4. 파일 쓰기 (FileReader/BufferedReader)

// copy 폴더에 새로운 파일 생성
File newFile = new File(path + "copy\\" + fileNm);

// 파일 출력스트림 생성
FileWriter fileWriter = new FileWriter(newFile);
// 출력 버퍼 생성
BufferedWriter bufferedWriter = new BufferedWriter(fileWriter);

// 파일 출력
if ( !result.isEmpty() ){
   bufferedWriter.writer(result);
}

// 폴더 내 읽기 for문이면 여기서 닫아주는게 좋음
bufferedWriter.flush();
bufferedWriter.close();

 

 

4. for문 마지막 or write 후 or finally에 close 작성

fileReader.close();
bufferedReader.close();
bufferedWriter.close();

 

 

5. 실행 (Ctrl+F11)

* 안되면 Run > Run As > Java application 

* 작성한 폴더에 원하는 문자열을 찾아 파일이 카피된다.

그리드형

댓글