注册 登录
编程论坛 VB6论坛

求教一个二进制方式打开文件的疑问

btt6 发布于 2017-01-11 11:28, 2005 次点击
如何以二进制方式打开一个文件,并把文件的第一个字符串内容和最后一个字符串内容调换位置,并保存
文件存放目录 c:\a2.bmp
求哪位好心人能给个思路或方法,谢谢了

5 回复
#2
ZHRXJR2017-01-11 16:22
既然是二进制数据,怎么会是“第一个字符串内容和最后一个字符串内容”? 搞不懂!字符串不可能是二进制数据!
二进制文件根据存储二进制文件的原始文件不同,其打开二进制文件显示的方式不同,那么你的这个二进制文件的原始文件可能是 *.bmp 文件吧?
况且 *.bmp 文件中也不可能存在字符串数据!
#3
xiangyue05102017-01-11 19:41
可能是楼主表达和举例不当。如果是二进制文件直接用open就可以实现

程序代码:
Dim myByt() As Byte  '定义一个数组


 FileSize = FileLen(OldFile) '获取文件长度
ReDim myByt(FileSize - 1) As Byte

 

 Open OldFile For Binary As #1

 Get #1, , myByt

 Close #1
  

 Dim byt1 As Byte

 byt1 = myByt(LBound(myByt))

 myByt(LBound(myByt)) = myByt(UBound(myByt))

 myByt(UBound(myByt)) = byt1

 

 Open NewFile For Binary As #2

 Put #2, , myByt

 Close #2
#4
ZHRXJR2017-01-12 12:40
在ADO中有一个Stream对象,可以轻松处理二进制图片的显示、存储,图片可以是 *.bmp、*.gif、*.jpg等。
但楼主的“并把文件的第一个字符串内容和最后一个字符串内容调换位置”没有办法处理。
下面是一个读取二进制图片的程序代码,供参考。
程序代码:

Dim cn As New ADODB.Connection
Dim rs As New ADODB.Recordset
Dim mst As New ADODB.Stream
Private Sub List1_Click()
  Dim cnnstr As String
  cnnstr = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & App.Path & "\ABC.mdb;Persist Security Info=False"
  cn.Open cnnstr
  rs.Open "select * from 文件表 where 名称='" + List1.Text + "'", cn, adOpenDynamic, adLockOptimistic
  mst.Type = adTypeBinary
  mst.Open
  mst.Write rs.Fields("文件")
  mst.SaveToFile App.Path & "\doc\" & List1.Text & ".jpg", adSaveCreateOverWrite    '在doc目录中存储图片
  Image1.Picture = LoadPicture(App.Path & "\doc\" & List1.Text)    '在 Image1 控件显示图片
  mst.Close
  rs.Close
End Sub
#5
风吹过b2017-01-12 13:36
复制文件,然后
以二进制数据打开文件 ,然后读取第一个字节,取文件长度,读最后一个字节。
把最后一个字节写到第一个字节位置,然后把第一个字节写到最后一个字节位置。

反向解密,同样的操作。

#6
ZHRXJR2017-01-12 13:48
回复 5楼 风吹过b
这个当然可以,但是必须是在存储二进制文件时必须按你的说法操作,然后在读取文件时再反向操作。不过没有试过,是否可以有待测试。
问题是这样操作就比较麻烦一点,首先需要打开二进制文件,操作二进制文件,然后才能使用ADO对象操作图片的存储与读取。
如果有时间我测试一下看看是否可以。
1