none
同时操作同一文本文件的问题 RRS feed

  • 问题

  • 有一个文本文件,程序定时写入一些数据。可是,主界面上操作员有可能随时查看(读取这个文本文件),这样就有一种可能行:系统对这个文件同时进行写入和读取操作。

    我试了一下,如果用FileStream类,把Share的特性打开,可以达到目的,但FileSream对文本读写不方便。如果用StreamWriter,读写方便,但StremWriter没有定义Share特性的地方,而且测试表明同时操作就异常。

    我能想到的一个笨办法就是读这个文件之前先Copy一个副本,写操作在原来文件,读在副本上,读完再删除。

    各位有什么其他好点儿的方法? 多谢指导!
    2009年12月21日 2:41

答案

全部回复

  • 你好!
         不要同时写入文件,容易造成文件中存在“脏”数据!
    周雪峰
    2009年12月21日 3:01
    版主
  • 你好!
         不要同时写入文件,容易造成文件中存在“脏”数据!
    周雪峰

    谢谢,不过我不需要同时写文件。我只要求能够同时一个读,一个写就行。除了copy一份,还有其他办法?
    2009年12月21日 3:11
  • 2009年12月21日 3:18
    版主
  • 写到数据库


    http://feiyun0112.cnblogs.com/

    谢谢,数据库是不是要用额外的程序,如Access之类的?用文本形式可以吗?
    2009年12月21日 3:23
  • 你好!
         不要同时写入文件,容易造成文件中存在“脏”数据!
    周雪峰

    谢谢,不过我不需要同时写文件。我只要求能够同时一个读,一个写就行。除了copy一份,还有其他办法?
    同时读写也需要同步控制的,你无法确定读到的数据是写入前的,还是写入后的!

    周雪峰
    2009年12月21日 4:39
    版主
  • 你好!
         不要同时写入文件,容易造成文件中存在“脏”数据!
    周雪峰

    谢谢,不过我不需要同时写文件。我只要求能够同时一个读,一个写就行。除了copy一份,还有其他办法?
    同时读写也需要同步控制的,你无法确定读到的数据是写入前的,还是写入后的!

    周雪峰

    谢谢,在这一点上我要求不高,我只要求能够在界面上查看一个text文本, 而这个文本定期被程序更新。我担心查看程序和程序定期写入之间会产生异常。我对数据是否是最新的要求不高。
    2009年12月21日 5:02
  • 一般的做法是使用try...catch来捕获类似的异常,然后做合适的处理!
    周雪峰
    • 已标记为答案 菜鸟学VB 2009年12月21日 7:05
    2009年12月21日 6:30
    版主
  • 谢谢,不过,我决定采用读之前先Copy一份的方法。感谢你的回答。
    2009年12月21日 7:05
  • 不用客气啊!做一个临时副本也是可行的!
    周雪峰
    2009年12月21日 8:06
    版主