voskobovich
@voskobovich
PHP Developer | 8+ years exp.

Как реализовать чтение файла по FTP с нужного места в Java?

Второй день ищу решение.
Сейчас есть подключение к серверу, чтение из GZ-потока и подсчет полученных байтов в прошлый раз. Скачиваемые файлы будут иметь вес под 2 Gb.
Вот мой код:
InputStream inputStream = null;
InputStreamReader inputStreamReader = null;
StringBuilder stringBuilder = new StringBuilder();
String line;

try {
    URI uri = new URI("ftp", "user:pass", "localhost", 21, "/file.gz", null, null);
    URL url = uri.toURL();
    FtpURLConnection connection = (FtpURLConnection) url.openConnection();

    int countBytes = 0;

    inputStream = connection.getInputStream();
    inputStream = new GZIPInputStream(inputStream);
    inputStreamReader = new InputStreamReader(inputStream, StandardCharsets.UTF_8);

    int bytes;
    char ch;
    while ((bytes = inputStreamReader.read()) != -1) {
        ch = (char) bytes;
        countBytes += 1;

        if (ch != '\n') {
            stringBuilder.append(ch);
        } else {
            line = stringBuilder.toString();
            System.out.println(line);

            stringBuilder = new StringBuilder();
        }
    }

} catch (IOException | URISyntaxException e) {
    e.printStackTrace();
} finally {
    try {
        assert inputStream != null;
        inputStream.close();
    } catch (IOException e) {
        e.printStackTrace();
    }

    try {
        assert inputStreamReader != null;
        inputStreamReader.close();
    } catch (IOException e) {
        e.printStackTrace();
    }

    stringBuilder = null;
    line = null;
}

Как передать смещение при чтении с файла по FTP?
Заголовок Range работает только для HTTP протокола.
Я в тупике(

PS: Замечания по коду и его оптимизации приветствуются.
  • Вопрос задан
  • 667 просмотров
Пригласить эксперта
Ответы на вопрос 1
@relgames
Java Developer
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы