투케이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;
    }

 

반응형
Comments