Можете ли вы получить доступ к файлам на удаленном FTP-сервере с помощью RandomAccessFile? - PullRequest
1 голос
/ 14 июня 2019

Я пытаюсь прочитать файл на удаленном FTP-сервере с помощью библиотеки Apache Commons Net.

retrieveFileStream возвращает InputStream и помещает его в BufferedReader.

Но я хочу использовать RandomAccessFile (для использования метода seek()).

Я хочу получить Inputstream как RandomAccessFile.

Возможно ли это?

FTPClient ftp = new FTPClient();
InputStream in = ftp.retrieveFileStream(remote_file_name);
BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(in, "UTF-8"));

1 Ответ

0 голосов
/ 14 июня 2019

Если вы хотите начать чтение удаленного файла с определенного смещения, используйте FTPClient.setRestartOffset.FTP-сервер должен поддерживать команду REST (большинство это делают).

ftp.setRestartOffset(offset);
InputStream in = ftp.retrieveFileStream(remote_file_name);
// Now you can read as many bytes as you need from 'in'

Если вы не хотите читать файл до конца и хотите повторно использовать соединение для других операций, вам нужнодля вызова FTPClient.abort.


(Вы не можете ни преобразовать InputStream в RandomAccessFile, ни использовать RandomAccessFile так или иначе с файлами на FTP-сервере)

...