FileStream := TFileStream.Create(FileName, fmOpenRead);但多次读取文件后(多线程),提示“EFOpenError, cannot open file 另一个程序正在使用此文件”,
请问一般怎么样读取同一二进制文件?
是不是FileStream不支持?

解决方案 »

  1.   

    TFileStream有2个构造过程,你使用的构造过程是以独占方式建立的:
    constructor Create(const FileName: string; Mode: Word); overload;
    要多次读取同一文件,可以使用另一个构造过程:
    constructor TFileStream.Create(const FileName: string; Mode: Word; Rights: Cardinal);
    其中的Rights是允许共享的权限,具体可察看帮助
      

  2.   

    FileStream := TFileStream.Create(FileName, fmShareDenyNone);
    就行了,呵呵。