自己寫了一個簡單的ftp客戶端,這個客戶端主要使用的是FtpClient這個類,這個類處於jdk的lib/rt.jar包中。現在實現了文件上傳,文件夾上傳。其餘的功能有待補充。
代碼如下:
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import sun.net.TelnetOutputStream;
import sun.net.ftp.FtpClient;
public class FtpUpload {
FtpClient ftpClient = new FtpClient();
String sServer = "";
String sUser = "";
String sPassword = "";
/**
* @return Returns the sPassword.
*/
public String getSPassword() {
return sPassword;
}
/**
* @param password
* The sPassword to set.
*/
public void setSPassword(String password) {
sPassword = password;
}
/**
* @return Returns the sServer.
*/
public String getSServer() {
return sServer;
}
/**
* @param server
* The sServer to set.
*/
public void setSServer(String server) {
sServer = server;
}
/**
* @return Returns the sUser.
*/
public String getSUser() {
return sUser;
}
/**
* @param user
* The sUser to set.
*/
public void setSUser(String user) {
sUser = user;
}
private void setLoginInfo(String strServerIp, String strUser, String strPasswd) {
sServer = strServerIp;
sUser = strUser;
sPassword = strPasswd;
}
private void connect() throws IOException {
ftpClient.openServer(sServer);
ftpClient.login(sUser, sPassword);
ftpClient.binary();
}
private void uploadFolder(String strFoldName) throws IOException {
File f = new File(strFoldName);
if (!f.exists()) {
return;
}
File subFile[] = f.listFiles();
for (int i = 0; i < subFile.length; i++) {
uploadFile(subFile[i], subFile[i].getName());
}
}
private void uploadFile(String strSrcFileName, String strObjFileName) throws IOException {
File file_in = new File(strSrcFileName);
uploadFile(file_in, strObjFileName);
}
private void uploadFile(File fScrFile, String strObjFileName) throws IOException {
TelnetOutputStream os = ftpClient.put(strObjFileName);
FileInputStream is = new FileInputStream(fScrFile);
byte[] bytes = new byte[1024];
int c;
while ((c = is.read(bytes)) != -1) {
os.write(bytes, 0, c);
}
is.close();
os.close();
log(" 「" + strObjFileName + "」 File has been uploaded。/r/n");
}
private void closeConnect() throws IOException {
ftpClient.closeServer();
}
private void log(Object obj) {
System.out.println(obj);
}
public static void main(String[] args) throws Exception {
FtpUpload ftp = new FtpUpload();
ftp.setLoginInfo("203.186.92.88", "anonymous", "anonymous");
ftp.connect();
ftp.uploadFolder("C:/ftp/");
ftp.uploadFile("C:/ftp/log.txt","ftplog.txt");
ftp.closeConnect();
}
}