环境是nokia 5310
写了一段小程序,先填充一个0x00-0xFF的序数数组x[],以文件流的方式写到SD卡的a.bin中
然后关闭文件再connect一次,再以文件流的方式读a.bin,发现手机并没有去读SD卡,而是直接从文件缓冲中
将刚才的x[]返回给我。请问如何使java每次读文件都是从物理设备获取,而不是从缓存中返回?

解决方案 »

  1.   

    此回复为自动发出,仅用于显示而已,并无任何其他特殊作用
    楼主【zhongyh】截止到2008-07-04 10:26:32的历史汇总数据(不包括此帖):
    发帖的总数量:0                        发帖的总分数:0                        
    结贴的总数量:0                        结贴的总分数:0                        
    无满意结贴数:0                        无满意结贴分:0                        
    未结的帖子数:0                        未结的总分数:0                        
    结贴的百分比:---------------------结分的百分比:---------------------
    无满意结贴率:---------------------无满意结分率:---------------------
    如何结贴请参考这里:http://topic.csdn.net/u/20080501/09/ef7ba1b3-6466-49f6-9d92-36fe6d471dd1.html
      

  2.   

    在windows下,可以通过nocache的方式访问文件,每次读写都不经过缓存。
    在wince下做不到,但我通过读写其他更大的文件,来将文件缓存挤出内存。
    在symbian+java,似乎用大文件来挤还是不行。我读写了将近30MByte的数据后再读a.bin,仍然是缓存中的数据。因为我的SD卡是假容量卡,写进去读回来肯定是不正确的。我想检测出来。
      

  3.   

    在symbian下不用java也没解决。
      

  4.   

    唉,最后还是我自己解决了。
    由于不能看到symbian及java的实现,因而以下很多是猜测的:
    对于嵌入式fs来说,缓存可能存在多个地方,包括物理盘的缓存区、文件系统缓存区、文件缓存区。对于java来说,又多了一层fc,因而在fc一层可能又有缓存。
    之所以这样认为是因为我做了多个试验,利用缓存的机制尝试清物理盘缓存,文件缓存及fc缓存。
    最终的解决方法是使用不同的fc来操作文件,冲掉在ram中的缓存。