清华大佬耗费三个月吐血整理的几百G的资源,免费分享!....>>>
Option Explicit
Private Const OFS_MAXPATHNAME = 128
Private Type OFSTRUCT
cBytes As Byte
fFixedDisk As Byte
nErrCode As Integer
Reserved1 As Integer
Reserved2 As Integer
szPathName(OFS_MAXPATHNAME) As Byte
End Type
Private Declare Function CreateFile Lib "kernel32" Alias "CreateFileA" (ByVal lpFileName As String, ByVal dwDesiredAccess As Long, ByVal dwShareMode As Long, ByVal lpSecurityAttributes As Any, ByVal dwCreationDisposition As Long, ByVal dwFlagsAndAttributes As Long, ByVal hTemplateFile As Long) As Long
Private Declare Function OpenFile Lib "kernel32" (ByVal lpFileName As String, lpReOpenBuff As OFSTRUCT, ByVal wStyle As Long) As Long
Private Declare Function SetFilePointer Lib "kernel32" (ByVal hFile As Long, ByVal lDistanceToMove As Long, lpDistanceToMoveHigh As Long, ByVal dwMoveMethod As Long) As Long
Private Declare Function GetFileSize Lib "kernel32" (ByVal hFile As Long, lpFileSizeHigh As Long) As Long
Private Declare Function ReadFile Lib "kernel32" (ByVal hFile As Long, lpBuffer As Any, ByVal nNumberOfBytesToRead As Long, lpNumberOfBytesRead As Long, ByVal lpOverlapped As Any) As Long
Private Declare Function WriteFile Lib "kernel32" (ByVal hFile As Long, lpBuffer As Any, ByVal nNumberOfBytesToWrite As Long, lpNumberOfBytesWritten As Long, lpOverlapped As Any) As Long
Private Declare Function CloseHandle Lib "kernel32" (ByVal hObject As Long) As Long
Private Const OF_READ = &H0
Private Const OF_WRITE = &H1
Private Const FILE_BEGIN = 0
Private Const FILE_END = 2
Private Const FILE_SHARE_READ = &H1
Private Const FILE_SHARE_WRITE = &H2
Private Const CREATE_NEW = 1
Private Const CREATE_ALWAYS = 2
Private Const OPEN_EXISTING = 3
Private Const OPEN_ALWAYS = 4
Private Const GENERIC_READ = &H80000000
Private Const GENERIC_WRITE = &H40000000
'将Byte数组写入到文件
Public Function WriteBytesToFile(ByVal filePath As String, ByRef bBytes() As Byte) As Boolean
Dim fHandle As Long
Dim OF As OFSTRUCT, retB As Boolean
Dim nSize As Long, ret As Long
retB = False
nSize = UBound(bBytes)
fHandle = CreateFile(filePath, GENERIC_WRITE, FILE_SHARE_READ Or FILE_SHARE_WRITE, ByVal 0&, OPEN_ALWAYS, 0, 0)
If fHandle <> -1 Then
SetFilePointer fHandle, 0, 0, FILE_BEGIN
WriteFile fHandle, bBytes(0), nSize + 1, ret, ByVal 0&
CloseHandle fHandle
retB = True
End If
WriteBytesToFile = retB
End Function
'将二进制文件读入到 Byte数组
Public Function ReadFileToBytes(ByVal filePath As String, ByRef bBytes() As Byte) As Boolean
On Error Resume Next
Dim fHandle As Long
Dim OF As OFSTRUCT, retu As Boolean
Dim nSize As Long, ret As Long
retu = False
fHandle = OpenFile(filePath, OF, OF_READ)
If fHandle <> -1 Then
nSize = GetFileSize(fHandle, 0)
If nSize > 0 Then
ReDim bBytes(nSize - 1) As Byte
SetFilePointer fHandle, 0, 0, FILE_BEGIN
ReadFile fHandle, bBytes(0), nSize, ret, ByVal 0&
retu = True
End If
CloseHandle fHandle
End If
If Err Then
Err.Clear
retu = False
End If
ReadFileToBytes = retu
End Function
'API方式写文本文件
Public Function SaveToTextFile(filePath As String, content As String, saveMode As Byte) As Boolean
Dim i As Long, L As Long, bBytes(1) As Byte, ascValue As Long
Dim fHandle As Long, ret As Long, retB As Boolean
retB = False
'检查参数
If Len(filePath) = 0 Or Len(content) = 0 Then
SaveToTextFile = False
Exit Function
End If
'打开文件
If saveMode = 2 Then
fHandle = CreateFile(filePath, GENERIC_WRITE, FILE_SHARE_READ Or FILE_SHARE_WRITE, ByVal 0&, CREATE_ALWAYS, 0, 0)
Else
fHandle = CreateFile(filePath, GENERIC_WRITE, FILE_SHARE_READ Or FILE_SHARE_WRITE, ByVal 0&, OPEN_ALWAYS, 0, 0)
End If
If fHandle <> -1 Then
If saveMode = 2 Then
SetFilePointer fHandle, 0, 0, FILE_BEGIN
Else
SetFilePointer fHandle, 0, 0, FILE_END
End If
L = Len(content)
For i = 1 To L
ascValue = Asc(Mid(content, i, 1))
bBytes(0) = ascValue And &HFF
bBytes(1) = (ascValue And &HFF00&) \ 256
If bBytes(1) > 0 Then
WriteFile fHandle, bBytes(1), 1, ret, ByVal 0&
WriteFile fHandle, bBytes(0), 1, ret, ByVal 0&
Else
WriteFile fHandle, bBytes(0), 1, ret, ByVal 0&
End If
Next
CloseHandle fHandle
retB = True
End If
SaveToTextFile = retB
End Function
'API方式读文本文件
Public Function ReadFromTextFile(ByVal filePath As String, ByRef content As String) As Boolean
On Error Resume Next
Dim fHandle As Long, bBytes() As Byte
Dim OF As OFSTRUCT, sFile As String
Dim nSize As Long, ret As Long, retu As Boolean
retu = False
sFile = filePath
fHandle = OpenFile(sFile, OF, OF_READ)
If fHandle <> -1 Then
nSize = GetFileSize(fHandle, 0)
If nSize > 0 Then
ReDim bBytes(nSize - 1) As Byte
SetFilePointer fHandle, 0, 0, FILE_BEGIN
ReadFile fHandle, bBytes(0), nSize, ret, ByVal 0&
content = StrConv(bBytes(), vbUnicode)
retu = True
End If
CloseHandle fHandle
End If
If Err Then
Err.Clear
retu = False
End If
ReadFromTextFile = retu
End Function