300x250
SFTP(Secure File Transfer Protocol)는 SSH(File Transfer Protocol)를 이용해 안전하게 파일을 전송하는 프로토콜
Java에서 SFTP를 사용하려면 몇 가지 인기 있는 라이브러리를 사용할 수 있습니다.
그 중 가장 많이 사용되는 라이브러리는 JSch와 Apache Commons VFS입니다.
1. JSch
JSch는 JCraft에서 제공하는 순수 Java로 작성된 SSH2 라이브러리로, SFTP를 포함한 다양한 기능을 제공
Maven 의존성 추가
<dependency>
<groupId>com.jcraft</groupId>
<artifactId>jsch</artifactId>
<version>0.1.55</version>
</dependency>
SFTP 사용 예제
import com.jcraft.jsch.ChannelSftp;
import com.jcraft.jsch.JSch;
import com.jcraft.jsch.Session;
import java.io.FileInputStream;
public class SFTPExample {
public static void main(String[] args) {
String host = "your.sftp.server";
int port = 22;
String user = "yourUsername";
String password = "yourPassword";
String localFile = "path/to/local/file";
String remoteDir = "/path/to/remote/dir/";
JSch jsch = new JSch();
Session session = null;
ChannelSftp channelSftp = null;
try {
session = jsch.getSession(user, host, port);
session.setPassword(password);
session.setConfig("StrictHostKeyChecking", "no");
session.connect();
channelSftp = (ChannelSftp) session.openChannel("sftp");
channelSftp.connect();
channelSftp.put(new FileInputStream(localFile), remoteDir + "uploaded_file");
System.out.println("File uploaded successfully");
} catch (Exception ex) {
ex.printStackTrace();
} finally {
if (channelSftp != null) {
channelSftp.disconnect();
}
if (session != null) {
session.disconnect();
}
}
}
}
2. Apache Commons VFS
Apache Commons VFS (Virtual File System)는 파일 시스템의 다양한 타입을 추상화하는 라이브러리로, SFTP를 포함한 다양한 파일 시스템을 지원합니다.
Maven 의존성 추가
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-vfs2</artifactId>
<version>2.8.0</version>
</dependency>
SFTP 사용 예제
import org.apache.commons.vfs2.FileObject;
import org.apache.commons.vfs2.FileSystemManager;
import org.apache.commons.vfs2.VFS;
public class SFTPExample {
public static void main(String[] args) {
String sftpUri = "sftp://yourUsername:yourPassword@your.sftp.server/path/to/remote/dir/uploaded_file";
String localFilePath = "path/to/local/file";
FileSystemManager fsManager = null;
FileObject localFile = null;
FileObject remoteFile = null;
try {
fsManager = VFS.getManager();
localFile = fsManager.resolveFile(localFilePath);
remoteFile = fsManager.resolveFile(sftpUri);
remoteFile.copyFrom(localFile, Selectors.SELECT_SELF);
System.out.println("File uploaded successfully");
} catch (Exception ex) {
ex.printStackTrace();
} finally {
try {
if (localFile != null) {
localFile.close();
}
if (remoteFile != null) {
remoteFile.close();
}
} catch (Exception ex) {
ex.printStackTrace();
}
}
}
}
요약
- JSch: 경량의 순수 Java로 작성된 SSH2 라이브러리. 직접적으로 SSH와 SFTP 프로토콜을 사용하여 세부적인 제어가 가능
- Apache Commons VFS: 다양한 파일 시스템을 추상화하여 일관된 API를 제공. SFTP를 포함한 여러 파일 시스템 타입을 지원
이 두 라이브러리는 각각의 장단점이 있으므로, 필요에 맞는 라이브러리를 선택하여 사용하면 됩니다.
JSch는 더 세부적인 제어가 가능하고, Apache Commons VFS는 더 높은 수준의 추상화를 제공합니다.
300x250
'IT > 기타' 카테고리의 다른 글
데이터그로스팀 역할? (1) | 2024.11.24 |
---|---|
BI (Business Intelligence) 뜻은? (1) | 2024.11.19 |
공카드번호란? (0) | 2024.11.17 |
nbase-arc 란 (0) | 2024.11.03 |
SQL 큐브리드 sign 함수 개념, DECODE(SIGN()) 함수 사용방법 (1) | 2024.10.22 |