我想把25MB的文本文件,一次读入richtextbox 中,(大约要30秒),有没有更快的方法?

解决方案 »

  1.   

    用js异步读取,可以实现读一条输出一条。用xmlHttp.
      

  2.   

    除了js异步读取,还有别的方法吗?不会用xmlHttp
      

  3.   

    我觉得所谓的速度最快,也就是让用户感觉速度最快而已,并不是整体的读取速度有本质的提高,那个应该是需要硬件技术方面的提升了。
    我记得以前看UltraEditor的一篇介绍文章时,有提到过此类情况,我的理解是 窗口概念,也就是说,在大的文件,能够在窗口上显示的始终就只有那么一点,因此最快的速度就是将这部分内容先读取出来、显示出来,其他部分的可以通过在后台用其他线程慢慢读取到内存。
    也就是说,先读取部分字节(不要使用那种一次性将整个文件全部读入的函数),这部分先读取的字节刚好够整个屏幕显示的,然后就显示出来,接着再继续读取剩余的内容,直到全部读取到内存。
    基本上,就是这样的感念了。不过,要做到这样的话,设计能力和程序编写能力都要有相应的提高才是,有难度的吧。
      

  4.   

    首先使用文件流方式一次读入string中..
    然后将字符串赋值到richtextbox的Rtf属性中试试..希望你客户的计算机的内存>1G...并且不是vista
      

  5.   

    能不能先读入DataSet?
    新手的猜想:)
      

  6.   

    word就是先读一点显示出来,如果用户往后翻页,就全读出来.
      

  7.   

    不存在什么最快还是最慢的方法。只要是在WINDOWS上,大家最终都是调用FILE API读的。不管你用。NET还是直接用API,一次读读入25M都是一样的慢。 解决方法当然就类似JackLucifer 所述,可以用FileMapping,如同PHOTOSHOP可以显示非常大的图,它也是一次把整个大图放入内存里。? 显然不是的。
      

  8.   

    richTextBox1.LoadFile(filePath, RichTextBoxStreamType.PlainText);
      

  9.   

    首先CreateFileMapping,然后MapViewOfFile。这是WINDOWS操作系统中处理大文件的标准方案。
      

  10.   

    (1)richTextBox1.LoadFile(filePath, RichTextBoxStreamType.PlainText);
    这个方法我试了下,也得20多秒,(2)先CreateFileMapping,然后MapViewOfFile。这是WINDOWS操作系统中处理大文件的标准方案。
    这个方法,不知怎用,请老师详细解释下.查了下MSDN,找不到呀.
      

  11.   

    大文件明显要做成带进度显示,读取结束后再显示,你想一次都显示怎么搞他都会慢的,
    举个例子,你装vista,用1个小时,你在牛逼,也不能把它搞正1分钟就装完
      

  12.   


    (2)先CreateFileMapping,然后MapViewOfFile。这是WINDOWS操作系统中处理大文件的标准方案。 
    这个方法,不知怎用,请老师详细解释下.查了下MSDN,找不到呀.
    MSDN可以找到。只是在Platform SDK 部分。
    ms-help://MS.VSCC.v80/MS.MSDN.v80/MS.WIN32COM.v10.en/fileio/fs/createfilemapping.htm
    或搜CreateFileMapping
      

  13.   

    先CreateFileMapping,然后MapViewOfFile。
      

  14.   

    把文本转换成rtf格式
    然后richtextbox.rtf;试试
      

  15.   

    PHOTOSHOP肯定是全部读入内存的。
    lz说的似乎并不是文本读取慢,25M的rtf文本转化应该是很费时的。
      

  16.   

    到现在也没解决这个问题.vb里有个FSO对象模型,读起来很快的,不知c#里有没有?
      

  17.   

    this.richTextBox1.LoadFile(filePath, RichTextBoxStreamType.PlainText);或者, 内存映射..^ō^
      

  18.   

    先CreateFileMapping,然后MapViewOfFile。
    =========================================
    要在非托管平台,要在托管写有点麻烦
      

  19.   

    围观,我内存2G,读取200KB的都要1到2秒,搂主25M想1到2秒的话,估计很难,当然如果把内存弄大点估计会接近