可以看到内容很简单,根据文件路径创建文件,把内容写入文件中。
回到
string2File(final String str, final String fileName);
看下
String prevContent = file2String(fileName);
这一行干了什么,从外面看,是从文件名获取到一个前置内容prevContent,判断应该是把文件的前置内容落入.bak文件中
可以看到如果从文件中读出的字节数等于文件的字节数(也就是完全读出成功了),则返回读出的内容。
此时就明白这个prevContent的含义了,其实就是先从源文件中预读出一次,预读出成功后,再把预读出的内容全部写入到bak后缀的文件中。其实就是做了一层缓存,先预读出,再把缓存写入源文件。此时我们在.bak和.tmp两个后缀的文件中有读出内容,下面两个操作,
就把.tmp文件冲掉了,应该是这样的,这两行代码其实没有特别搞清楚。但可以肯定.bak文件是一定拥有全部输出内容的。
此时我们就把
persist( )
这个持久化方法读明白了,之前我们自己做持久化,就是落库落库落库,落mysql,但在RocketMq的源码中,我们看到了“持久化”的底层操作,其实就是io流写入本地硬盘。
文章知识点与官方知识档案匹配,可进一步学习相关知识Java技能树首页概览93529 人正在系统学习中
声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!