[java] Apache Commons Net과 SFTP

Apache Commons Net 라이브러리는 Java에서 네트워크 프로토콜을 구현하는 데 사용되는 라이브러리로, SFTP(Secure File Transfer Protocol)를 포함한 다양한 프로토콜을 지원합니다.

이 라이브러리를 사용하여 SFTP를 통해 파일을 전송하는 방법을 설명하겠습니다.

Apache Commons Net 라이브러리 추가

먼저, Maven 또는 Gradle과 같은 빌드 도구를 사용하여 Apache Commons Net 라이브러리를 프로젝트에 추가해야 합니다. Maven을 사용한다면, pom.xml 파일에 다음 의존성을 추가합니다.

<dependency>
    <groupId>commons-net</groupId>
    <artifactId>commons-net</artifactId>
    <version>3.8.0</version>
</dependency>

Gradle을 사용한다면, build.gradle 파일에 다음과 같이 추가합니다.

dependencies {
    implementation 'commons-net:commons-net:3.8.0'
}

SFTP 파일 전송

이제 Apache Commons Net 라이브러리를 사용하여 SFTP를 통해 파일을 전송하는 방법을 살펴보겠습니다.

import org.apache.commons.net.ftp.FTPClient;
import org.apache.commons.net.ftp.FTPReply;

public class SftpFileTransfer {
    public static void main(String[] args) {
        String server = "example.com";
        int port = 22;
        String user = "username";
        String password = "password";

        FTPClient ftp = new FTPClient();
        try {
            ftp.connect(server, port);
            int reply = ftp.getReplyCode();
            if (!FTPReply.isPositiveCompletion(reply)) {
                ftp.disconnect();
                throw new Exception("FTP server refused connection.");
            }

            ftp.login(user, password);
            // 파일 전송 로직
            // ...
        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            if (ftp.isConnected()) {
                try {
                    ftp.disconnect();
                } catch (IOException ioe) {
                    ioe.printStackTrace();
                }
            }
        }
    }
}

위의 예제는 Apache Commons Net을 사용하여 SFTP 서버에 연결하고 파일을 전송하는 기본적인 코드입니다. 제공된 예제는 연결을 설정하고 로그인하여 파일을 전송하기 전에 다양한 핸들링을 추가해야 합니다.

Apache Commons Net 라이브러리를 사용하여 SFTP 파일 전송을 자유롭게 구현할 수 있으며, 위의 예제는 그 시작점으로 활용될 수 있습니다.

참고자료: