# Работа с FTP на Android: Полное руководство

File Transfer Protocol (FTP) — это стандартный сетевой протокол, который используется для передачи файлов между клиентом и сервером. На Android существует множество способов работы с FTP, как через специализированные приложения, так и через написание собственного кода. В этой статье мы рассмотрим, как подключиться к FTP-серверу и управлять файлами на Android.

## Зачем использовать FTP на Android?

FTP является удобным способом обмена файлами, особенно когда необходимо передавать большие объемы данных. Некоторые сценарии использования включают:

- Резервное копирование данных.
- Перемещение медиафайлов (фото, видео) между устройствами.
- Работа с веб-серверами для загрузки и скачивания контента.

## Как подключиться к FTP-серверу на Android

### 1. Использование приложения FTP-клиента

Существует множество FTP-клиентов для Android, которые позволяют легко подключаться к FTP-серверам. Вот несколько популярных приложений:

- **ES File Explorer**: Это универсальный файловый менеджер с поддержкой FTP.
- **FTP Client**: Простое приложение для работы с FTP-серверами.
- **AndFTP**: Бесплатный FTP-клиент с расширенными функциями.

#### Пример использования ES File Explorer

1. Установите ES File Explorer из Google Play Store.
2. Откройте приложение и нажмите на иконку "+", чтобы добавить новое соединение.
3. Выберите "FTP" и введите данные вашего FTP-сервера (IP-адрес, порт, логин и пароль).
4. Нажмите "Connect", чтобы установить соединение.

### 2. Использование библиотеки для программирования

Если вы разработчик и хотите интегрировать FTP-функционал в ваше приложение, вы можете использовать библиотеку Apache CommonsNet.

#### Пример кода для работы с FTP

1. Добавьте зависимость в файл `build.gradle` вашего проекта:

```groovy
implementation 'commons-net:commons-net:3.6'
```

2. Используйте следующий код для подключения к FTP-серверу:

```java
import org.apache.commons.net.ftp.FTP;
import org.apache.commons.net.ftp.FTPClient;

import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;

public class FTPExample {
    public void downloadFile(String server, int port, String user, String pass, String remoteFilePath, String downloadPath) {
        FTPClient ftpClient = new FTPClient();
        try {
            ftpClient.connect(server, port);
            ftpClient.login(user, pass);
            ftpClient.enterLocalPassiveMode();
            ftpClient.setFileType(FTPBINARY_FILE_TYPE);

            // Создаем поток для записи загружаемого файла
            FileOutputStream outputStream = new FileOutputStream(downloadPath);
            InputStream inputStream = ftpClient.retrieveFileStream(remoteFilePath);

            byte[] buffer = new byte[1024];
            int bytesRead;
            while ((bytesRead = inputStream.read(buffer)) != -1) {
                outputStream.write(buffer, 0, bytesRead);
            }

            // Закрываем соединения
            outputStream.close();
            inputStream.close();
            ftpClient.completePendingCommand();
        } catch (IOException ex) {
            ex.printStackTrace();
        } finally {
            try {
                if (ftpClient.isConnected()) {
                    ftpClient.logout();
                    ftpClient.disconnect();
                }
            } catch (IOException ex) {
                ex.printStackTrace();
            }
        }
    }
}
```

### 3. Примечания по безопасности

При использовании FTP стоит помнить, что стандартный FTP не шифрует данные, что делает их уязвимыми для перехвата. Рекомендуется использовать FTPS или SFTP для безопасной передачи файлов.

## Заключение

Работа с FTP на Android может быть реализована как с помощью готовых приложений, так и через интеграцию библиотек в ваше собственное программное обеспечение. Выбор подхода зависит от ваших задач. При соблюдении основных рекомендаций безопасности, FTP станет надежным инструментом для передачи данных в вашем мобильном приложении.