Java 어플리케이션에서 FTP를 통해 디렉토리를 업로드하려면, Apache Commons Net 라이브러리를 사용하여 FTP 클라이언트를 구현할 수 있습니다. 이 라이브러리는 FTP를 통해 파일을 전송하기 위한 다양한 기능을 제공합니다.
Apache Commons Net 라이브러리 추가
먼저 Maven을 사용하여 Apache Commons Net 라이브러리를 프로젝트에 추가해야 합니다. pom.xml
파일에 다음 의존성을 추가합니다:
<dependency>
<groupId>commons-net</groupId>
<artifactId>commons-net</artifactId>
<version>3.8.0</version>
</dependency>
의존성을 추가한 후 Maven 프로젝트를 업데이트하여 라이브러리를 다운로드하고 프로젝트에 적용합니다.
디렉토리 업로드 구현
Apache Commons Net을 사용하여 디렉토리를 FTP 서버에 업로드하는 Java 코드는 다음과 같습니다:
import org.apache.commons.net.ftp.FTP;
import org.apache.commons.net.ftp.FTPClient;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
public class FtpDirectoryUpload {
public static void main(String[] args) {
String server = "ftp.example.com";
int port = 21;
String user = "username";
String pass = "password";
FTPClient ftpClient = new FTPClient();
try {
ftpClient.connect(server, port);
ftpClient.login(user, pass);
ftpClient.setFileType(FTP.BINARY_FILE_TYPE);
File localDir = new File("C:\\local\\directory");
String remoteDirPath = "/remote/directory";
uploadDirectory(ftpClient, localDir, remoteDirPath, "");
ftpClient.logout();
} catch (IOException e) {
e.printStackTrace();
} finally {
if (ftpClient.isConnected()) {
try {
ftpClient.disconnect();
} catch (IOException ex) {
ex.printStackTrace();
}
}
}
}
public static void uploadDirectory(FTPClient ftpClient, File localDir, String remoteDirPath, String parentDir) throws IOException {
if (!remoteDirPath.equals("")) {
if (!ftpClient.changeWorkingDirectory(remoteDirPath)) {
ftpClient.makeDirectory(remoteDirPath);
ftpClient.changeWorkingDirectory(remoteDirPath);
}
}
File[] localFiles = localDir.listFiles();
if (localFiles != null && localFiles.length > 0) {
for (File localFile : localFiles) {
if (localFile.isDirectory()) {
String newRemoteDirPath = parentDir + "/" + localFile.getName();
if (!ftpClient.changeWorkingDirectory(newRemoteDirPath)) {
ftpClient.makeDirectory(newRemoteDirPath);
}
uploadDirectory(ftpClient, localFile, newRemoteDirPath, parentDir + "/" + localFile.getName());
} else {
String remoteFilePath = parentDir + "/" + localFile.getName();
FileInputStream inputStream = new FileInputStream(localFile);
ftpClient.storeFile(remoteFilePath, inputStream);
inputStream.close();
}
}
}
}
}
위의 코드는 Apache Commons Net을 사용하여 FTP 서버에 디렉토리를 업로드하는 간단한 예제입니다. 코드에서는 FTP 클라이언트를 인스턴스화하고, 로그인한 후 바이너리 파일 타입을 설정합니다. uploadDirectory
메서드를 사용하여 지정된 로컬 디렉토리를 재귀적으로 업로드합니다.
마치며
Apache Commons Net을 이용하면 Java 어플리케이션에서 간단하게 FTP 클라이언트를 구현할 수 있습니다. 따라서 Apache Commons Net을 사용하여 FTP 서버와의 상호작용을 효율적으로 처리할 수 있습니다.
이제 Java 어플리케이션에서 Apache Commons Net을 사용하여 디렉토리를 FTP 서버에 업로드하는 방법을 배웠습니다. 원하는 경우 이 예제를 기반으로 확장하여 개인 또는 업무용 프로젝트에 적용할 수 있습니다.