TA贡献1858条经验 获得超8个赞
看看我对C#的类似问题的答案。虽然Java中的编码支持有些不同,但代码非常相似。
基本上,一般来说,这不是一件非常容易的事情。正如MSalter所指出的那样,UTF-8确实很容易发现,\r或者\n因为这些字符的UTF-8表示与ASCII相同,并且这些字节不会出现在多字节字符中。
\r
\n
所以基本上,取一个(比方说)2K的缓冲区,然后逐步向后读(在你之前跳到2K,读下一个2K)检查线路终止。然后跳到流中正确的位置,InputStreamReader在顶部创建一个,在顶部创建一个BufferedReader。然后打电话BufferedReader.readLine()。
InputStreamReader
BufferedReader
BufferedReader.readLine()
TA贡献1785条经验 获得超4个赞
Apache Commons有一个使用RandomAccessFile的实现。
它叫做ReversedLinesFileReader。
大厂算法面试真题解析32讲
¥ 68.00
32 堂微服务架构设计与落地精讲课
¥ 78.00
Java 并发编程深度解析
¥ 58.00
网络编程之Netty一站式精讲
再学经典:《Effective Java》独家解析
举报