Java Language
FTP (파일 전송 프로토콜)
수색…
통사론
- FTPClient connect (InetAddress 호스트, int 포트)
- FTPClient 로그인 (문자열 사용자 이름, 문자열 암호)
- FTPClient disconnect ()
- FTPReply getReplyStrings ()
- 부울 storeFile (String remote, InputStream local)
- OutputStream storeFileStream (String 원격)
- 부울 setFileType (int fileType)
- 부울 completePendingCommand ()
매개 변수
매개 변수 | 세부 |
---|---|
숙주 | FTP 서버의 호스트 이름 또는 IP 주소 |
포트 | FTP 서버 포트 |
사용자 이름 | FTP 서버 사용자 이름 |
암호 | FTP 서버 암호 |
FTP 서버 연결 및 로그인
Java에서 FTP를 사용하려면 새 FTPClient
를 작성한 다음 .connect(String server, int port)
및 .login(String username, String password)
사용하여 서버에 연결하고 로그인해야합니다.
import java.io.IOException;
import org.apache.commons.net.ftp.FTPClient;
import org.apache.commons.net.ftp.FTPReply;
//Import all the required resource for this project.
public class FTPConnectAndLogin {
public static void main(String[] args) {
// SET THESE TO MATCH YOUR FTP SERVER //
String server = "www.server.com"; //Server can be either host name or IP address.
int port = 21;
String user = "Username";
String pass = "Password";
FTPClient ftp = new FTPClient;
ftp.connect(server, port);
ftp.login(user, pass);
}
}
이제 기본 사항을 완료했습니다. 그러나 서버에 연결하는 중 오류가 발생하면 어떻게해야합니까? 우리는 무언가 잘못되었을 때를 알고 오류 메시지를 듣기를 원할 것입니다. 연결하는 동안 오류를 잡아내는 코드를 추가해 보겠습니다.
try {
ftp.connect(server, port);
showServerReply(ftp);
int replyCode = ftp.getReplyCode();
if (!FTPReply.isPositiveCompletion(replyCode)) {
System.out.printIn("Operation failed. Server reply code: " + replyCode)
return;
}
ftp.login(user, pass);
} catch {
}
우리가 방금 한 일을 단계별로 나누자.
showServerReply(ftp);
이것은 나중에 우리가 만들 함수를 의미합니다.
int replyCode = ftp.getReplyCode();
이것은 응답 / 오류 코드를 서버에서 가져 와서 정수로 저장합니다.
if (!FTPReply.isPositiveCompletion(replyCode)) {
System.out.printIn("Operation failed. Server reply code: " + replyCode)
return;
}
그러면 응답 코드를 검사하여 오류가 있는지 확인합니다. 오류가있는 경우, "작업 실패 : 서버 응답 코드 :"와 오류 코드가 인쇄됩니다. 다음 단계에서 추가 할 try / catch 블록도 추가했습니다. 다음으로, ftp.login()
에서 오류를 검사하는 함수를 작성해 보겠습니다.
boolean success = ftp.login(user, pass);
showServerReply(ftp);
if (!success) {
System.out.println("Failed to log into the server");
return;
} else {
System.out.println("LOGGED IN SERVER");
}
이 블록을 너무 세분화합시다.
boolean success = ftp.login(user, pass);
이것은 FTP 서버에 로그인하려고 시도 할뿐만 아니라 결과를 부울로 저장합니다.
showServerReply(ftp);
이렇게하면 서버가 우리에게 메시지를 보냈지 만 다음 단계에서이 함수를 만들어야합니다.
if (!success) {
System.out.println("Failed to log into the server");
return;
} else {
System.out.println("LOGGED IN SERVER");
}
이 명령문은 우리가 성공적으로 로그인했는지 확인합니다. 그렇다면 "서버에 로그인"을 인쇄하고, 그렇지 않으면 "서버에 로그인하지 못했습니다"가 인쇄됩니다. 지금까지 우리 스크립트입니다.
import java.io.IOException;
import org.apache.commons.net.ftp.FTPClient;
import org.apache.commons.net.ftp.FTPReply;
public class FTPConnectAndLogin {
public static void main(String[] args) {
// SET THESE TO MATCH YOUR FTP SERVER //
String server = "www.server.com";
int port = 21;
String user = "username"
String pass = "password"
FTPClient ftp = new FTPClient
try {
ftp.connect(server, port)
showServerReply(ftp);
int replyCode = ftpClient.getReplyCode();
if (!FTPReply.isPositiveCompletion(replyCode)) {
System.out.println("Operation failed. Server reply code: " + replyCode);
return;
}
boolean success = ftp.login(user, pass);
showServerReply(ftp);
if (!success) {
System.out.println("Failed to log into the server");
return;
} else {
System.out.println("LOGGED IN SERVER");
}
} catch {
}
}
}
이제 전체 프로세스에서 오류가 발생할 경우를 대비하여 Catch 블록을 작성해 보겠습니다.
} catch (IOException ex) {
System.out.println("Oops! Something went wrong.");
ex.printStackTrace();
}
완료된 catch 블록이 이제 "Oops! Something went wrong"라는 문구를 인쇄합니다. 스택 추적은 오류가있는 경우에 발생합니다. 이제 우리의 마지막 단계는 우리가 잠시 동안 사용해온 showServerReply()
를 만드는 것입니다.
private static void showServerReply(FTPClient ftp) {
String[] replies = ftp.getReplyStrings();
if (replies != null && replies.length > 0) {
for (String aReply : replies) {
System.out.println("SERVER: " + aReply);
}
}
}
이 함수는 FTPClient
를 변수로 사용하고 "ftp"라고합니다. 그런 다음 서버의 모든 서버 응답을 문자열 배열에 저장합니다. 다음으로 메시지가 저장되었는지 확인합니다. 어떤 것이 있으면 각각을 "SERVER : [reply]"로 인쇄합니다. 이제 우리는 그 기능을 완료했습니다. 이것은 완성 된 스크립트입니다 :
import java.io.IOException;
import org.apache.commons.net.ftp.FTPClient;
import org.apache.commons.net.ftp.FTPReply;
public class FTPConnectAndLogin {
private static void showServerReply(FTPClient ftp) {
String[] replies = ftp.getReplyStrings();
if (replies != null && replies.length > 0) {
for (String aReply : replies) {
System.out.println("SERVER: " + aReply);
}
}
}
public static void main(String[] args) {
// SET THESE TO MATCH YOUR FTP SERVER //
String server = "www.server.com";
int port = 21;
String user = "username"
String pass = "password"
FTPClient ftp = new FTPClient
try {
ftp.connect(server, port)
showServerReply(ftp);
int replyCode = ftpClient.getReplyCode();
if (!FTPReply.isPositiveCompletion(replyCode)) {
System.out.println("Operation failed. Server reply code: " + replyCode);
return;
}
boolean success = ftp.login(user, pass);
showServerReply(ftp);
if (!success) {
System.out.println("Failed to log into the server");
return;
} else {
System.out.println("LOGGED IN SERVER");
}
} catch (IOException ex) {
System.out.println("Oops! Something went wrong.");
ex.printStackTrace();
}
}
}
먼저 새로운 FTPClient
를 만들고 서버에 연결하고 .connect(String server, int port)
및 .login(String username, String password)
사용하여 로그인하십시오. 코드가 서버에 연결되지 않는 경우 try / catch 블록을 사용하여 연결하고 로그인하는 것이 중요합니다. 또한 연결 및 로그인을 시도 할 때 서버에서 수신 할 수있는 메시지를 확인하고 표시하는 함수를 만들어야합니다.이 함수는 " showServerReply(FTPClient ftp)
"라고합니다.
import java.io.IOException;
import org.apache.commons.net.ftp.FTPClient;
import org.apache.commons.net.ftp.FTPReply;
public class FTPConnectAndLogin {
private static void showServerReply(FTPClient ftp) {
if (replies != null && replies.length > 0) {
for (String aReply : replies) {
System.out.println("SERVER: " + aReply);
}
}
}
public static void main(String[] args) {
// SET THESE TO MATCH YOUR FTP SERVER //
String server = "www.server.com";
int port = 21;
String user = "username"
String pass = "password"
FTPClient ftp = new FTPClient
try {
ftp.connect(server, port)
showServerReply(ftp);
int replyCode = ftpClient.getReplyCode();
if (!FTPReply.isPositiveCompletion(replyCode)) {
System.out.println("Operation failed. Server reply code: " + replyCode);
return;
}
boolean success = ftp.login(user, pass);
showServerReply(ftp);
if (!success) {
System.out.println("Failed to log into the server");
return;
} else {
System.out.println("LOGGED IN SERVER");
}
} catch (IOException ex) {
System.out.println("Oops! Something went wrong.");
ex.printStackTrace();
}
}
}
이 후에는 FTP 서버를 Java 스크립트에 연결해야합니다.