对于read这个过程 读取的内容多少是怎么实现的?
这里我还有点疑惑
while not Eof(F1) do
      begin
        Read(F1, Ch);
        Write(F2, Ch);
      end;
这个循环是怎么进行下一步的?读写的时候是一个字节一个字节的读写的?默认从第一个字节开始读,然后循环一次就读下一个字节吗?

解决方案 »

  1.   

    正如楼主所述
    对于F1, 其有一个当前位置信息, 打开时为0, 每执行一次 Read(f1, ch); 其值加1
    Eof(F1) 判断当前位置是否等于文件大小, 如果等于, 则返回True, 否则, 返回False楼主这种做法, 对于小文件可以, 但对于大文件, 会相当慢, 其主要原因是Read和Write没有缓冲, 而且读写次数比较多
    对于大文件, 可以有两种方法性能都比较高:
    一种使用BlockRead和BlockWrite, 如每次读64K
    另一种使用TFileStream, 其对读写提供了缓冲机制
      

  2.   

    我想请问楼上:
    对于blockread和blockwrite 这2个过程,每次读取的数据的大小有限制吗?一次 64K可以,那么一次1M可以吗?
      

  3.   

    还有就是blockread和blockwrite是用来操作无类型文件的,我想请问下text文件属于哪个类型?