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

标签 java ftp inputstream apache-commons-net randomaccessfile

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

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

最佳答案

如果您想从某个偏移量开始读取远程文件,请使用 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,也无法对 FTP 服务器上的文件使用 RandomAccessFile)

关于java - 您可以使用 RandomAccessFile 访问远程 FTP 服务器上的文件吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56591712/

相关文章:

java - 有没有一种方法可以将 InputStream 数据解码为文本,而无需在 InputStream 对象本身上使用流解码器?

java - 从 java 中查找 linux 发行版的名称

java - 构建一个运行时动态的 GUI

java - 将 JCheckBox 的文本和复选框对齐到父级的相对两侧

asp.net - default.aspx 是否相当于 "index"文件的 .Net?

python - 如何使用 RNFT 和 RNTO 命令重命名目录? (Python FTP)

javax.imageio.ImageIO 创建 ImageInputStream 时出现问题

java - 如何使用 volley 库访问 restful web 服务方法

windows - 从命令行通过 FTP 下载完整的远程目录

java - Try block 导致 Stream 关​​闭 IOException