是否可以编写一个程序来读取位于远程计算机(可通过网络访问)上的大文件的最后 N 行,而无需将所有文件下载到本地计算机?只能在本地计算机上执行,不能在远程进行更改。
如果有可能,我们如何在 Java 中做到这一点?
是否可以编写一个程序来读取位于远程计算机(可通过网络访问)上的大文件的最后 N 行,而无需将所有文件下载到本地计算机?只能在本地计算机上执行,不能在远程进行更改。
如果有可能,我们如何在 Java 中做到这一点?
您应该使用无缓冲的 io 函数来打开和访问文件(open
/ read
/lseek
或CreateFile
/ ReadFile
/ SetFilePointer
)。然后你open
的文件,并寻找接近文件末尾的位置:lseek(fd,SEEK_END,-1024)
. 然后从文件中读取 1024 个字节,并扫描读取的数据以查找行终止序列。如果行数小于 N+1,那么您再次寻找但偏移量为 -2048 并读取额外的 1024 个字节。您迭代该过程,直到您在缓冲的数据中看到 N+1 行终止序列。
而已。
请参阅以下内容:快速读取文本文件的最后一行?
它们还提供了如何读取文件最后 N 行的示例。通过使用 seek 命令,您可以跳过不想读取的字节。