请问:如何得知文件处于被其它线程写入状态?急~~~ 得到本地的一个文件,另一个程序不断往里面添加文件,为保证数据的完整性,读取之前希望该文件已完成写入,该如何判断?谢谢 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 写文件开始时先写一个Start.txt,表示开始写,结束后写个end.txt表示结束 1. OutputStream写的时候文件不可被读取2. 写文件时使用临时文件, 写完后重命名到正式文件 我还没有写程序做试验。按照我的理解,如果那个产品正在写文件,你这边以读的方式打开文件能成功吗?难道没有抛出异常吗?如果真是这样的话,有两个建议:1. 先用 File.canRead() 测试一下,看能不能达到预期的效果。2. 如果上面的不行,再试试 File.canWrite()我就不信操作系统能让两个程序同时写一个文件。 8=) 两个程序可以同时写一个文件吧,比如两个记事本写一个txt关键看程序打开文件时是否用了独占模式.没用就可以用另一个程序同时写 > 两个程序可以同时写一个文件吧,比如两个记事本写一个txt这种情况只能算是“两个程序同时编辑一个文件”,并不是“同时写”。记事本程序只有在“保存文件”的那一瞬间才是在“写文件”。 推荐把写入方法和读取方法写在同一个类中,并且用synchronizded 修饰这两个方法;这样可以互斥的来访问之;应该能达到楼主的目的 这不是线程同步吧,好象是进城,所以yong java比较麻烦,。synchronized 肯定没有用,可以考虑与操作系统系统相关的api(需要调用本地方法)比如FileLock,在读的时候加锁,不让其他人写,当然需要File.canRead() 判断是否可以读 支持 crazycy(崔毅) ( 一星(中级)) synchronizded 可以解决这个问题 看java帮助时,几句话不理解请赐教!100分 用快逸报表开发过c/s架构程序的请进 用JAVA编写求质数的问题!在线等解决 String index out of range: -2问题 用数组模拟声明的程序中遇到了一个 小问题,急,在线等 50分请教如何让程序在后台运行(以任务栏右下角的图标方式运行) 帮忙解释main()函数中的参数! 请大家帮我找错。。。 下了些C#的源码要分析,在打印的时候能不能把行号也打印出来啊。谢谢 刚开始学JAVA,问一下TOMCAT是什么东西啊? 关于反射机制 J2se中网络通信
2. 写文件时使用临时文件, 写完后重命名到正式文件
关键看程序打开文件时是否用了独占模式.没用就可以用另一个程序同时写
synchronized 肯定没有用,可以考虑与操作系统系统相关的api(需要调用本地方法)比如FileLock,在读的时候加锁,不让其他人写,当然需要File.canRead() 判断是否可以读