1 回答

TA貢獻(xiàn)1784條經(jīng)驗(yàn) 獲得超8個(gè)贊
說穿了其實(shí)灰常簡單了. 你"同時(shí)看磁盤上的數(shù)據(jù)"的時(shí)候, 沒有繞過操作系統(tǒng) 去查看文件吧? 所以看到的還是 操作系統(tǒng)的文件緩存里的內(nèi)容. 所以你上面的測試肯定是你現(xiàn)在的結(jié)論.
想要看到你要的結(jié)果, 可能的方法: 寫文件后直接 電腦斷電/拔掉硬盤/把windows搞藍(lán)屏. 然后重啟機(jī)器后去看 文件內(nèi)容是否改變了...
有一個(gè)很簡單的方法! 上優(yōu)盤, debug停住之后, 立刻拔掉優(yōu)盤! 然后連上優(yōu)盤, 可以看到?jīng)]有寫入!
正好結(jié)合這個(gè)問題記一下我對文件緩存的理解. 有誤請幫我指出.
我們一般說文件緩存, 其實(shí)是有兩個(gè)緩存;
一個(gè)是 application層面的, 使用fflush(c), Writer.flush(java) 來 清空緩存到 OS層面;
一個(gè)是 OS 層面的, 使用fsync/msync(c), FileChannel.force/FileDescriptor.sync(java) 來清空緩存到 文件系統(tǒng).
添加回答
舉報(bào)