воскресенье, 10 июля 2011 г.

Java. Работа с FTP. FTP Client

Задача.

Написать на Java программу, которая работает с FTP


- Upload File (загрузить файл на ФТП)
- Download File (скачать файл с ФТП)
- Get List of Files (получить список файлов на ФТП)
- Delete File (удалить файл с ФТП)

Примеры классов для этого - http://www.kodejava.org/examples/355.html

Для работы требуется org.apache.commons.net.ftp.FTPClient
Скачать можно тут - http://www.java2s.com/Code/Jar/ABC/Downloadcommonsnetjar.htm

Код класса:



import org.apache.commons.net.ftp.FTPClient;
import java.io.IOException;
import java.io.FileOutputStream;
import java.io.FileInputStream;

public class FTP_Client {

/**
* Функция для получения списка файлов и папок в папке Folder
* @param FTPADDR, адрес ФТП сервера
* @param user, логин к фтп
* @param Password, пароль к фтп
* @param Folder, папка где будет производиться поиск
* @return String[] RESULT, список файлов/папок
*/
public static String[] GetList(String FTPADDR, String user, String Password,String Folder)
{
String[] RESULT;

RESULT = null;

FTPClient client = new FTPClient();
try {
client.connect(FTPADDR);
client.login(user, Password);
client.changeWorkingDirectory(Folder);
RESULT = client.listNames();
client.logout();
} catch (IOException e) {
e.printStackTrace();
} finally {
try {
client.disconnect();
} catch (IOException e) {
e.printStackTrace();
}
}


return RESULT;
}

/**
 * Upload a file to a FTP server
  * @param FTPADDR, адрес ФТП сервера
  * @param user, логин к фтп
  * @param Password, пароль к фтп
 * @param PathOnFtp, путь к файлу на фтп - например /upload/touch.dat
 * @param FilenameOnLocalMachine, путь к файлу на локальной машине - например C:/somefile.txt
 */
public static void UploadFileOnFtp(String FTPADDR, String user, String Password,String PathOnFtp, String FilenameOnLocalMachine)
{
FTPClient client = new FTPClient();

FileInputStream fis = null;

try {
client.connect(FTPADDR);
client.login(user, Password);

//client.changeWorkingDirectory("upload");

// Create an InputStream of the file to be uploaded

String filename = FilenameOnLocalMachine;
fis = new FileInputStream(filename);


// Store file to server
//
client.storeFile(PathOnFtp, fis);
client.logout();
} catch (IOException e) {
e.printStackTrace();
} finally {
try {
if (fis != null) {
fis.close();
}
client.disconnect();
} catch (IOException e) {
e.printStackTrace();
}
}
}

/**
* Download File from FTP
 * @param FTPADDR, адрес ФТП сервера
 * @param user, логин к фтп
 * @param Password, пароль к фтп
* @param FullPathToPutFile - полный путь к файлу на локальной машине, куда будем его сохранять
* @param FilenameOnFTP - имя файла на фтп (функция ищет файл в папке /upload/)
*/
public static void DownloadFileFromFTP(String FTPADDR, String user, String Password,String FullPathToPutFile, String FilenameOnFTP)
{

FTPClient client = new FTPClient();
FileOutputStream fos = null;

try {
client.connect(FTPADDR);
client.login(user, Password);


//   The remote filename to be downloaded.

String filename = FullPathToPutFile;
fos = new FileOutputStream(filename);


//   Download file from FTP server

client.retrieveFile("/upload/"+FilenameOnFTP, fos);
//

} catch (IOException e) {
e.printStackTrace();
} finally {
try {
if (fos != null) {
fos.close();
}
client.disconnect();
} catch (IOException e) {
e.printStackTrace();
}
}

}

/**
* Delete File From FTP
* @param FTPADDR, адрес ФТП сервера
* @param user, логин к фтп
* @param Password, пароль к фтп
* @param Filename, путь к файлу (например /upload/touch.dat)
*/

public static void DeleteFileOnFtp(String FTPADDR, String user, String Password,String Filename)
{
FTPClient client = new FTPClient();
try {
client.connect(FTPADDR);
client.login(user, Password);

//
// Delete file on the FTP server. When the FTP delete complete
// it returns true.
//
String filename = Filename;
boolean deleted = client.deleteFile(filename);
if (deleted) {
System.out.println("File deleted...");
}

client.logout();
} catch (IOException e) {
e.printStackTrace();
} finally {
try {
client.disconnect();
} catch (IOException e) {
e.printStackTrace();
}
}
}



public static void main(String[] args) {
// Использование

DownloadFileFromFTP("127.0.0.1","user","user","C:/touch.dat","touch.dat");
UploadFileOnFtp("127.0.0.1","user","user","/upload/touch.dat","C:/1.xml");

String[] RESULT = GetList("127.0.0.1","user","user","upload");
for (int i=0;i<RESULT.length;i++)
{
System.out.println("Name = " + RESULT[i]);
}

      DeleteFileOnFtp("127.0.0.1","user","user","/upload/touch.dat");


}
}

Комментариев нет:

Отправить комментарий