要求:
1、使用API
2、把字符串使用二进制保存
3、写入时获取数据的开始和结束范围数值(记录用途)
4、指定读取的范围(从X开始到Y结束)使用OPEN、GET那些会方便好多,但我想在效率上得到更好的效果所以想用API,但对API不熟。麻烦大家给个简单的例子让小弟参考。

解决方案 »

  1.   


    如果不是超过 2GB 的文件,效率相差很小。用 Open, Get 就好。'API function for large files
    Public Declare Function CreateFile Lib "kernel32" Alias "CreateFileA" (ByVal lpFileName As String, ByVal dwDesiredAccess As Long, ByVal dwShareMode As Long, lpSecurityAttributes As Long, ByVal dwCreationDisposition As Long, ByVal dwFlagsAndAttributes As Long, ByVal hTemplateFile As Long) As LongPublic Declare Function GetFileType Lib "kernel32" (ByVal hFile As Long) As LongPublic Declare Function GetFileSize Lib "kernel32" (ByVal hFile As Long, lpFileSizeHigh As Long) As LongPublic Declare Function GetFileSizeEx Lib "kernel32" (ByVal hFile As Long, lpFileSize As Currency) As LongPublic Declare Function ReadFile Lib "kernel32" (ByVal hFile As Long, lpBuffer As Any, ByVal nNumberOfBytesToRead As Long, lpNumberOfBytesRead As Long, lpOverlapped As Long) As LongPublic Declare Function SetFilePointer Lib "kernel32" (ByVal hFile As Long, ByVal lDistanceToMove As Long, lpDistanceToMoveHigh As Long, ByVal dwMoveMethod As Long) As LongPublic Declare Function WriteFile Lib "kernel32" (ByVal hFile As Long, lpBuffer As Any, ByVal nNumberOfBytesToWrite As Long, lpNumberOfBytesWritten As Long, lpOverlapped As Long) As LongPublic Declare Function CloseHandle Lib "kernel32" (ByVal hObject As Long) As LongPublic Declare Function DeleteFile Lib "kernel32" Alias "DeleteFileA" (ByVal lpFileName As String) As LongPublic Declare Function CopyFile Lib "kernel32" Alias "CopyFileA" (ByVal lpExistingFileName As String, ByVal lpNewFileName As String, ByVal bFailIfExists As Long) As LongPublic Declare Function GetLastError Lib "kernel32" () As LongPublic Const FILE_ADD_FILE = (&H2)Public Const FILE_APPEND_DATA = (&H4)Public Const STANDARD_RIGHTS_REQUIRED = &HF0000Public Const SYNCHRONIZE = &H100000Public Const FILE_ALL_ACCESS = (STANDARD_RIGHTS_REQUIRED Or SYNCHRONIZE Or &H1FF)Public Const FILE_BEGIN = 0Public Const FILE_END = 2Public Const FILE_CURRENT = 1Public Const FILE_READ_DATA = (&H1)Public Const FILE_SHARE_READ = &H1Public Const FILE_SHARE_WRITE = &H2Public Const GENERIC_READ = &H80000000Public Const GENERIC_WRITE = &H40000000Public Const CREATE_NEW = 1Public Const OPEN_EXISTING = 3Public Const MOVEFILE_COPY_ALLOWED = &H2Public Const MOVEFILE_REPLACE_EXISTING = &H1Public Const FILE_TYPE_CHAR = &H2Public Const FILE_TYPE_DISK = &H1Public Const FILE_TYPE_PIPE = &H3Public Const FILE_TYPE_REMOTE = &H8000Public Const FILE_TYPE_UNKNOWN = &H0Public Const FILE_FLAG_BACKUP_SEMANTICS = &H2000000Public Const FILE_FLAG_DELETE_ON_CLOSE = &H4000000Public Const FILE_FLAG_NO_BUFFERING = &H20000000Public Const FILE_FLAG_OVERLAPPED = &H40000000Public Const FILE_FLAG_POSIX_SEMANTICS = &H1000000Public Const FILE_FLAG_RANDOM_ACCESS = &H10000000Public Const FILE_FLAG_SEQUENTIAL_SCAN = &H8000000Public Const FILE_FLAG_WRITE_THROUGH = &H80000000Public Type SECURITY_ATTRIBUTES
            nLength As Long
            lpSecurityDescriptor As Long
            bInheritHandle As Long
    End TypePublic Type OVERLAPPED
            Internal As Long
            InternalHigh As Long
            offset As Long
            OffsetHigh As Long
            hEvent As Long
    End Type
      

  2.   

    Open与Get这些函数又不是很深的封装,并不会有很夸张的效率差别。
      

  3.   

    有时需要存储2G以上的文件.所以用API吧~