
folder #확인 #존재여부 #FTPClient #isExist #exists() #하위폴더 #만들기 #자바
포스팅 목차 바로가기
안녕하세요, 배곧동개발자 입니다.
자바에서 FTP를 이용해 파일들을 관리하다보면 폴더를 새로 생성해야하는 경우도 있고, 새로만드는 폴더에 파일을 넣어야하는 경우도 있습니다.
이럴 때에 특정 폴더의 존재유무를 따져서 폴더를 생성해야 하는 경우가 생기지요.
1. exists 함수가 없다
File 을 쓰는 경우에는 간단하게 exists() 함수를 통해서 존재유무를 확인하고 없다면 mkdir()를 이용해서 만들어주면 되지만 FTP에서는 저 exists()함수가 존재하지 않습니다.
하지만 우리는 개발자입니다. 없다면 만들면 되요!
2. exists 대신 changeWorkingDirectory
대신, changeWorkingDirectory() 함수가 존재하지요! 이거를 활용해서 로직을 짜게되면-
public void CheckAndMakeDirectory(FTPClient ftp, String path) throws IOException{
boolean isExist;
isExist = ftp.changeWorkingDirectory(path);
// 없으면 폴더 생성
if(!isExist){
ftp.makeDirectory(path);
}
}
요렇게 만들 수 있습니다.
원래 폴더를 이동하는 함수인데, 이동이 불가능한 경우(폴더없음) 폴더를 생성해줌으로써 exists() 함수를 대체 할 수 있지요.
3. 사용 예시
그러면 위에 만든 함수를 어떻게 사용해야하는지 한번 알아보겠습니다.
ftp = new FTPClient(); // FTP Client 객체 생성
/*
FTP 정보 입력~ 불라불라~
*/
// 1. 먼저 폴더가 있는지 확인하고 없으면 폴더 생성
CheckAndMakeDirectory(ftp, "/BRIDGE/"+today_y);
CheckAndMakeDirectory(ftp, "/BRIDGE/"+today_y+"/"+today);
// 2. 그 뒤 파일 옮기기
ftp.storeFile("/BRIDGE/"+today_y+"/"+today+"/"+fileVO.getFilenm(), fis);
어렵지 않아요! 이런식으로 활용할 수 있습니다. 쉽죠?!
우리가 괜히 개발자인가요? 애초에 isExist()도 앞선 개발자가 만들어놓은 함수입니다!! 없으면 만들어 쓰자!
이만, 배곧동개발자 였습니다.