您可以使用 RandomAccessFile 访问远程 FTP 服务器上的文件吗?

Can you access files on the remote FTP server with RandomAccessFile?

我正在尝试使用 Apache Commons Net 库读取 FTP 远程服务器上的文件。

retrieveFileStream returns 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"));

如果要从某个偏移量开始读取远程文件,请使用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 服务器上的文件)