Notice
Recent Posts
Recent Comments
Link
투케이2K
857. (Android/Java) [jsch] SFTP 라이브러리 - 원격 서버 파일 다운 로드 수행 실시 - downLoadFile 본문
Android
857. (Android/Java) [jsch] SFTP 라이브러리 - 원격 서버 파일 다운 로드 수행 실시 - downLoadFile
투케이2K 2024. 9. 1. 09:44[개발 환경 설정]
개발 툴 : AndroidStudio
개발 언어 : Java / Kotlin
[소스 코드]
// ------------------------------------------------------------------------------------------
// TODO [SFTP 서버 파일 다운로드 수행]
// ------------------------------------------------------------------------------------------
// TODO [라이브러리 설치 버전] : implementation group: 'com.jcraft', name: 'jsch', version: '0.1.54'
// ------------------------------------------------------------------------------------------
public synchronized boolean downLoadFile(String appPath, String appFileName, String sftpPath, String sftpFileName) {
S_Log._D_("SFTP 서버 파일 다운 로드 수행", new String[]{ "appPath :: " + String.valueOf(appPath), "appFileName :: " + String.valueOf(appFileName), "sftpPath :: " + String.valueOf(sftpPath), "sftpFileName :: " + String.valueOf(sftpFileName) });
/*
D ===================================================================
[LOG :: CLASS PLACE :: com.example.javaproject.C_Module.C_SFTP_Client_Module.downLoadFile(C_SFTP_Client_Module.java:473)]
----------------------------------------------------
[LOG :: NOW TIME :: 2024-08-31 13:08:37 토요일]
----------------------------------------------------
[LOG :: DESCRIPTION :: SFTP 서버 파일 다운 로드 수행]
----------------------------------------------------
[LOG :: appPath :: /data/user/0/com.example.javaproject/files/LOG_FILE_FOLDER]
----------------------------------------------------
[LOG :: appFileName :: download_log.txt]
----------------------------------------------------
[LOG :: sftpPath :: /test]
----------------------------------------------------
[LOG :: sftpFileName :: log.txt]
D ===================================================================
W ===================================================================
[LOG :: CLASS PLACE :: com.example.javaproject.C_Module.C_SFTP_Client_Module.downLoadFile(C_SFTP_Client_Module.java:506)]
----------------------------------------------------
[LOG :: NOW TIME :: 2024-08-31 13:08:37 토요일]
----------------------------------------------------
[LOG :: DESCRIPTION :: SFTP 서버 파일 리스트 확인]
----------------------------------------------------
[LOG :: [dr-xr-xr-x 19 root root 4096 Jul 3 15:13 .., -rw-r--r-- 1 root root 2 Aug 31 12:24 log.txt, drwxr-xr-x 2 root root 4096 Aug 31 12:24 .]]
W ===================================================================
W ===================================================================
[LOG :: CLASS PLACE :: com.example.javaproject.C_Module.C_SFTP_Client_Module.downLoadFile(C_SFTP_Client_Module.java:524)]
----------------------------------------------------
[LOG :: NOW TIME :: 2024-08-31 13:08:37 토요일]
----------------------------------------------------
[LOG :: DESCRIPTION :: SFTP 서버 파일 다운 로드 수행 성공]
----------------------------------------------------
LOG :: SFTP Path :: /test/log.txt]
----------------------------------------------------
[LOG :: APP Path :: /data/user/0/com.example.javaproject/files/LOG_FILE_FOLDER/download_log.txt]
W ===================================================================
// */
// [리턴 변수 선언]
boolean result = false;
// [로직 처리 수행]
try {
if (mMainCtx != null && isConnection == true){
if (channelSftp.isConnected() == true == true){
if (C_Util.stringNotNull(appPath) == true && C_Util.stringNotNull(appFileName) == true && C_Util.stringNotNull(sftpPath) == true && C_Util.stringNotNull(sftpFileName) == true){
// [해당 경로 파일 스트림 읽음]
File appFile = new File(appPath);
if (appFile.exists() == true){
String appSrcPath = appPath;
if (appPath.endsWith("/") == true){
appSrcPath += appFileName;
}
else {
appSrcPath += "/" + appFileName;
}
// [해당 원격 경로 이동 수행]
channelSftp.cd(sftpPath);
// [저장 된 파일 목록 확인]
Vector<ChannelSftp.LsEntry> fileAndFolderList = channelSftp.ls(sftpPath);
S_Log._W_("SFTP 서버 파일 리스트 확인", new String[]{String.valueOf(fileAndFolderList)});
if (String.valueOf(fileAndFolderList).contains(sftpFileName) == true){
// [원격 파일 경로 확인]
String sftpPathFile = sftpPath;
if (sftpPath.endsWith("/") == true){
sftpPathFile += sftpFileName;
}
else {
sftpPathFile += "/" + sftpFileName;
}
// [SFTP 서버 파일 다운 로드 수행]
channelSftp.get(sftpPathFile, appSrcPath);
result = true; // [리턴 변수 삽입]
S_Log._W_("SFTP 서버 파일 다운 로드 수행 성공", new String[]{ "SFTP Path :: " + String.valueOf(sftpPathFile), "APP Path :: " + String.valueOf(appSrcPath) });
}
else {
S_Log._E_("SFTP 서버 파일 다운 로드 에러 발생", new String[]{ "Error :: Sftp File List Not Found" });
}
}
else {
S_Log._E_("SFTP 서버 파일 다운 로드 에러 발생", new String[]{ "Error :: appFile Path Is Null" });
}
}
else {
S_Log._E_("SFTP 서버 파일 다운 로드 에러 발생", new String[]{ "Error :: Input Data Is Null" });
}
}
else {
S_Log._E_("SFTP 서버 파일 다운 로드 에러 발생", new String[]{ "Error :: channelSftp.isConnected() == false" });
}
}
else {
S_Log._E_("SFTP 서버 파일 다운 로드 에러 발생", new String[]{ "Error :: mMainCtx Is Null or channelSftp Not Null or isConnection false" });
}
}
catch (Exception e){
e.printStackTrace();
}
// [리턴 결과 반환]
return result;
}
반응형
'Android' 카테고리의 다른 글
Comments