我要查询的信息是从一个文件中取得,但是有时会对文件进行重写,如何避免在读取文件的时候获取不到内容
read-[时间].txt (读) write.txt(正在写ing) snapshot.txt
时间格式 yyyyMMHHmmssSSS
多个read-[时间].txt,和write.txt文件,然后在写完一个文件时(完成写入后),把现在的write.txt改名为read-[时间].txt,再把snapshot.txt中写入read-[时间].txt的文件名。如果程序没有在snapshot.txt读到read--[时间].txt说明可能正在写文件名(read-xxx.txt),等一等(10-20ms,简单处理 Thread.sleep()一下,retry次数再设定一下)或等下次查询。
主要目的是防止读写发生在同一文件来避免你说的问题。
######如楼上,那为什么不搞一个对这个文件操作的同步方法呢,不是更简单?传个参到这个方法,表示是读取还是写入,整个方法用个synchronized就OK了。简单直接。版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。