我有这个代码:
Function cpyBIN(cpFilename As String)
Dim litefile() As Byte
Dim FN As Integer
Dim xlof As Long
FN = 1
Open cpFilename For Binary As FN
xlof = LOF(FN)
ReDim litefile(xlof)
Get FN, , litefile
Open cpFilename & "Backup" For
Binary As #2
Put #2, , litefile
Close #2
Close FN
End Function
我以这样的形式使用它:
Private Sub cmdBackup_Click()
Dim strComputer, objWMIService, colFiles, objfile
strComputer = "."
Set objWMIService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
Set colFiles = objWMIService.ExecQuery("Select * from CIM_Datafile where Drive='D:' and path='\\contoh\\'")
For Each objfile In colFiles
cpyBIN (objfile.Name)
Next
End Sub
在contoh文件夹中有 2 个示例文件:
当我运行代码时,会出现如图所示的错误消息:
错误在如图所示的行中:
如何让它支持unicode文件名?或者这个功能有什么替代品吗??
有多种方法可以复制具有 Unicode 文件名的文件。第一种方法是使用Windows API:
Declare Function CopyFileW Lib "kernel32.dll" (ByVal lpExistingFileName As Long, _
ByVal lpNewFileName As Long, Optional ByVal bFailIfExists As Long) As Long
For Each objfile In colFiles
CopyFileW StrPtr(objfile.Name), StrPtr(objfile.Name & ".Backup")
Next
第二种方法是使用FileSystemObject:
Dim fso As FileSystemObject
Set fso = New FileSystemObject
For Each objfile In colFiles
fso.CopyFile objfile.Name, objfile.Name & ".Backup", True
Next
第三种方法是使用ADO Stream:
Dim s As ADODB.Stream
Set s = New ADODB.Stream
s.Open
s.Type = adTypeBinary
For Each objFile In colFiles
s.LoadFromFile objFile.Name
s.SaveToFile objFile.Name & ".Backup", adSaveCreateOverWrite
Next
s.Close
如果你想读取数据,我会使用 ADO Stream:
Dim s As ADODB.Stream
Set s = New ADODB.Stream
s.Open
s.Type = adTypeBinary
For Each objFile In colFiles
s.LoadFromFile objFile.Name
data = s.Read()
'use the data somehow
Next
s.Close
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句