Notice
Recent Posts
Recent Comments
Link
투케이2K
851. (Android/Java) [commons-net-3.6.jar] FTP 서버 연결 및 파일 다운로드 수행 - retrieveFile 본문
Android
851. (Android/Java) [commons-net-3.6.jar] FTP 서버 연결 및 파일 다운로드 수행 - retrieveFile
투케이2K 2024. 8. 26. 17:43[개발 환경 설정]
개발 툴 : AndroidStudio
개발 언어 : Java / Kotlin
[소스 코드]
// ------------------------------------------------------------------------------------------
// TODO [전역 변수 선언 실시]
// ------------------------------------------------------------------------------------------
String userName = "twok123";
String host = "towk.test.co.kr";
int port = 21; // [FTP 포트]
String password = "twok0123456789";
private Context mMainCtx; // [컨텍스트]
boolean isConnection = false; // [연결 상태 체크 변수]
FTPClient ftpClient = null; // [FTPClient]
// ------------------------------------------------------------------------------------------
// TODO [FTP 서버 연결 실시]
// ------------------------------------------------------------------------------------------
public synchronized boolean connectServer(String userName, String host, int port, String password) {
S_Log._D_("FTP 서버 연결 수행", new String[]{
"userName :: " + String.valueOf(userName),
"host :: " + String.valueOf(host),
"port :: " + String.valueOf(port),
"pw :: " + String.valueOf(password)
});
// [변수 초기화]
isConnection = false;
// [로직 처리 수행]
try {
if (mMainCtx != null && ftpClient == null){
if (C_Util.stringNotNullMulti(new String[]{userName, host, String.valueOf(port), password}) == true){
ftpClient = new FTPClient();
ftpClient.connect(host, port); // [호스트 연결 수행]
if (FTPReply.isPositiveCompletion(ftpClient.getReplyCode())){
ftpClient.login(userName, password); // [호스트 로그인 수행]
isConnection = ftpClient.isConnected(); // [변수에 연결 상태 값 저장 수행]
}
else {
S_Log._E_("FTP 서버 연결 수행 에러 발생", new String[]{ "Error :: isPositiveCompletion False" });
try {
if (ftpClient != null){
ftpClient.disconnect();
}
ftpClient = null;
}
catch (Exception es){}
}
}
else {
S_Log._E_("FTP 서버 연결 수행 에러 발생", new String[]{ "Error :: Input Data Is Null" });
}
}
else {
S_Log._E_("FTP 서버 연결 수행 에러 발생", new String[]{ "Error :: mMainCtx Is Null or ftpClient Not Null" });
}
}
catch (Exception e){
e.printStackTrace();
}
// [로그 출력 수행]
S_Log._W_("FTP 서버 연결 수행 결과 확인", new String[]{
"RETURN :: " + String.valueOf(isConnection)
});
// [리턴 반환 수행]
return isConnection;
}
// ------------------------------------------------------------------------------------------
// TODO [FTP 서버 파일 다운로드 수행]
// ------------------------------------------------------------------------------------------
public synchronized boolean downLoadFile(String appPath, String appFileName, String ftpPath) {
S_Log._D_("FTP 서버 파일 다운 로드 수행", new String[]{ "appPath :: " + String.valueOf(appPath), "appFileName :: " + String.valueOf(appFileName), "ftpPath :: " + String.valueOf(ftpPath) });
// [리턴 변수 선언]
boolean result = false;
// [로직 처리 수행]
try {
if (mMainCtx != null && ftpClient != null && isConnection == true){
if (ftpClient.isConnected() == true){
if (C_Util.stringNotNull(appPath) == true && C_Util.stringNotNull(appFileName) == true && C_Util.stringNotNull(ftpPath) == true){
// [해당 경로 파일 스트림 읽음]
File appFile = new File(appPath);
if (appFile.exists() == true){
String srcPath = appPath;
if (appPath.endsWith("/") == true){
srcPath += appFileName;
}
else {
srcPath += "/" + appFileName;
}
// [파일 타입 지정]
ftpClient.setFileType(FTP.BINARY_FILE_TYPE);
ftpClient.setFileTransferMode(FTP.BINARY_FILE_TYPE);
// [FTP 서버 파일 다운 로드 수행]
FileOutputStream fos = new FileOutputStream(srcPath);
result = ftpClient.retrieveFile(ftpPath, fos);
fos.close();
if (result == true){
S_Log._W_("FTP 서버 파일 다운 로드 성공", new String[]{ "FTP Path :: " + String.valueOf(ftpPath), "APP Path :: " + String.valueOf(srcPath) });
}
else {
S_Log._E_("FTP 서버 파일 다운 로드 실패", new String[]{ "FTP Path :: " + String.valueOf(ftpPath), "APP Path :: " + String.valueOf(appPath) });
}
}
else {
S_Log._E_("FTP 서버 파일 다운 로드 에러 발생", new String[]{ "Error :: appFile Path Is Null" });
}
}
else {
S_Log._E_("FTP 서버 파일 다운 로드 에러 발생", new String[]{ "Error :: File Path Is Null" });
}
}
else {
S_Log._E_("FTP 서버 파일 다운 로드 에러 발생", new String[]{ "Error :: ftpClient.isConnected() == false" });
}
}
else {
S_Log._E_("FTP 서버 파일 다운 로드 에러 발생", new String[]{ "Error :: mMainCtx Is Null or ftpClient Not Null or isConnection false" });
}
}
catch (Exception e){
e.printStackTrace();
}
// [리턴 결과 반환]
return result;
}
반응형
'Android' 카테고리의 다른 글
Comments