我主要不知道二进制数据流最好用什么表示。比如把一些字符和数字混合写入一个数据流。我是用以下方法实现的
dim slt() as Byte
Open App.Path & "\temp.bin" For Binary As #1
Put #1, 1, 24564
Put #1, , "djfhj"
...
Put #1, , 10
ReDim slt(LOF(1) - 1)
b = LOF(1) - 4
Get #1, 1, slt
Close #1
Kill App.Path & "\temp.bin"
也就是把字符和数字混合写入一个文件,然后从文件读取全部数据,再把文件删除。最后得到的数据可以转换为数据流。
我想知道什么方法比读写文件更加高效。最好写个简单示例

解决方案 »

  1.   

    二进制流使用Stream对象来读写,看看这个:
    http://download.csdn.net/detail/veron_04/1483930
    这个例子虽然是操作图片的,但对其他的文件也是一样的。
      

  2.   

    这个东西我会的,读写文件有个特点,写进去一个数据之后,指针是停留在这个数据后,可以继续写后面的数据。最关键的一点,写的数据是个数字的话。会以反转字节的16进制表示,也就是跟内存中计算是一样的。既然内存中是这么计算。用什么代码直接在内存中执行。而不需要写进去文件,再读出来,删除文件。
    我最需要的就是可以连接写不同类型,未知长度的数据。还有数字自动转成字节流,而不是转成字符型。还有put语句最大的好处可以在指定的位置写数据。Stream怎么实现这个呢
      

  3.   


    你是这个意思啊
    可以表示的方法很多啊
    比如使用UTF-8编码、UniCode编码都行啊。
      

  4.   

    API函数:
    RtlMoveMemory()
    Declare Sub CopyMemory Lib "kernel32" Alias "RtlMoveMemory" (Destination As Any, Source As Any, ByVal Length As Long)
      

  5.   

    用的就是CopyMemory ,不过它没有put方便,要先知道长度,然后指定下一个数据写的位置。而put不需要知道长度,可以连续写,写完后可以得到总长度。
      

  6.   

    “长度”的问题又不是不能解决。
    你用Put的时候,表面上没牵涉长度的问题,是因为你的“VB妈妈”在背后把这个事情给你做了……