|
|
|
@ -18,7 +18,6 @@ public class FTPUtil {
|
|
|
|
|
f.mkdirs();
|
|
|
|
|
|
|
|
|
|
FTPClient client = null;
|
|
|
|
|
try {
|
|
|
|
|
|
|
|
|
|
String thisSystemFileSeperator = File.separator;
|
|
|
|
|
|
|
|
|
@ -31,25 +30,37 @@ public class FTPUtil {
|
|
|
|
|
);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
client = new FTPClient();
|
|
|
|
|
client.setControlEncoding("UTF-8");
|
|
|
|
|
try {
|
|
|
|
|
client.connect(rs.getIp(), Integer.parseInt(rs.getPort()));
|
|
|
|
|
} catch (Exception e) {
|
|
|
|
|
throw new RuntimeException("접속 오류.");
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// 접속을 확인.
|
|
|
|
|
int resultCode = client.getReplyCode();
|
|
|
|
|
if (!FTPReply.isPositiveCompletion(resultCode)) {
|
|
|
|
|
System.out.println("FTP server refused connection.!");
|
|
|
|
|
throw new RuntimeException("접속 오류");
|
|
|
|
|
throw new RuntimeException("접속 오류 : FTP server refused connection.");
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
try {
|
|
|
|
|
client.setSoTimeout(1000);
|
|
|
|
|
} catch (Exception e) {
|
|
|
|
|
throw new RuntimeException("접속 오류.");
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
boolean loginResult = false;
|
|
|
|
|
try {
|
|
|
|
|
// 로그인을 한다.
|
|
|
|
|
if (!client.login(rs.getId(), rs.getPw())) {
|
|
|
|
|
System.out.println("Login Error!");
|
|
|
|
|
throw new RuntimeException("로그인 오류");
|
|
|
|
|
loginResult = client.login(rs.getId(), rs.getPw());
|
|
|
|
|
} catch (Exception e) {
|
|
|
|
|
throw new RuntimeException("로그인 오류 : Login Error");
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if (!loginResult) {
|
|
|
|
|
throw new RuntimeException("로그인 오류 : Login Error");
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
List<String> remoteFiles = new ArrayList<>();
|
|
|
|
|
List<String> remoteDirectories = new ArrayList<>();
|
|
|
|
@ -57,8 +68,7 @@ public class FTPUtil {
|
|
|
|
|
// FTP에서 파일 리스트와 디렉토리 정보를 취득한다.
|
|
|
|
|
if (!FTPUtil.getFileList(client, remoteSystemFileSeparator, remoteWorkPath, remoteFiles, remoteDirectories)) {
|
|
|
|
|
// 리스트 취득 실패시 프로그램을 종료한다.
|
|
|
|
|
System.out.println("File search Error!");
|
|
|
|
|
throw new RuntimeException("오류 발생");
|
|
|
|
|
throw new RuntimeException("파일 조회 오류 발생 : File search Error");
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
for (String remoteDirectory : remoteDirectories) {
|
|
|
|
@ -93,30 +103,23 @@ public class FTPUtil {
|
|
|
|
|
);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
try (FileOutputStream fo = new FileOutputStream(tempFileOutputPath)){
|
|
|
|
|
//FTPClient의 retrieveFile함수로 보내면 다운로드가 이루어 진다.
|
|
|
|
|
if (client.retrieveFile(remoteFile, fo)) {
|
|
|
|
|
System.out.println("Download - " + remoteFile);
|
|
|
|
|
}
|
|
|
|
|
} catch(Exception e) {
|
|
|
|
|
throw new RuntimeException("파일 다운로드 오류");
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if(client.isConnected()) {
|
|
|
|
|
client.disconnect();
|
|
|
|
|
}
|
|
|
|
|
} catch (Exception e) {
|
|
|
|
|
if(client.isConnected()) {
|
|
|
|
|
try {
|
|
|
|
|
client.disconnect();
|
|
|
|
|
} catch (IOException e1) {
|
|
|
|
|
throw new RuntimeException("오류 발생");
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
throw new RuntimeException("오류 발생");
|
|
|
|
|
} catch(Exception e) {
|
|
|
|
|
throw new RuntimeException("파일 다운로드 오류");
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
return true;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|