반응형
* 파일 읽기, 파일 복사, 파일 쓰기, 폴더 내 파일 읽기, 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
* 작성한 폴더에 원하는 문자열을 찾아 파일이 카피된다.
그리드형
'IT > Java' 카테고리의 다른 글
Cause: java.lang.NumberFormatException : For input string: 해결방법 (0) | 2022.01.12 |
---|---|
[JAVA] 다양한 형태의 JSON 파일 파싱하기 JSONParser, JSONObject, JSONArray (json.simple, GSON) (4) | 2021.11.30 |
[JAVA] 유니코드(Unicode) 한글 변환 (0) | 2021.11.27 |
[JAVA] 이클립스 eclipse workspace 변경 (0) | 2021.09.10 |
[JAVA] 환경변수 설정 (Win 10) (0) | 2021.08.19 |
댓글