VB二进制文件分割,合并问题

来源:百度知道 编辑:UC知道 时间:2024/06/29 23:58:57
用VB编程分割原文件a.mp3为两个文件,前面指定字节大小的为第一个文件a1.mp3,剩余部分做第二个文件a2.mp3.
结果是:分割后第一个文件a1.mp3好象是好的,第二个文件a2.mp3却不知道是什么东西?
反过来操作,把第二个文件a2.mp3追加到第一个文件a1.mp3后面,得到一个新的二合一文件b.mp3.这个文件跟原文件相比大小是一样的,可就是不一样了.播放到一半就没了.使用 copy /b a1.mp3+a2.mp3 b.mp3 来合并,结果一样.

询问用C的朋友,经测试也是如此,请高手出来赐教,谢谢~!
保存在TXT里面?应该不行吧,我都是用二进制的操作.TXT对文本可以,但对其他文件会丢失很多数据的.

感谢 小生怕鬼 messiahfree xiarugu XOooZzz 这几位朋友的热心帮助~!问题已经解决掉,是一个语句错误引起的. xiarugu 的代码也完全正确,有同样问题的朋友可以参考.另外分享下我的经验教训:1,我为了偷懒,读写数据的功能不但没有写成函数,代码也是直接复制到下一个过程,结果忘记修改参数,使得后一部分的文件全是 00 .所以丢失了数据.2,修改了错误1之后发现TXT,JPG好象可以分割合并了,但是处理过的EXE运行错误.经过比较发现文件的后一部分偏移了一个字节.仔细比较分析,原来第一半文件的最后一个字节和第二半文件的第一字节是重复的!于是修改读取的位置,覆盖这一重复的字节,问题解决.回过头来测试,发现偏移一个字节的图片文件虽然能打开,图象也看得到,但是其中有个麻点,只是最初没有注意到而已.
现把代码放到我的空间里,有用得着的朋友可以拿去参考~!http://hi.baidu.com/xiaomanger/blog/item/bee14b09e33dc1cc3bc76387.html
再次感谢各位朋友的热心帮助.messiahfree朋友的方法以后做文件操作时要多多使用.

Option Explicit

'-- 合并文件
'-- 将之前分割出来的 1.mp3 和 2.mp3 合并为 music_new.mp3
Private Sub cmdAddFile_Click()
Dim bytData() As Byte
bytData = ReadFile(App.Path & "\1.mp3")
Call WriteFile(App.Path & "\music_new.mp3", bytData)
bytData = ReadFile(App.Path & "\2.mp3")
Call WriteFile(App.Path & "\music_new.mp3", bytData, , False)
End Sub

'-- 分割文件
'-- 示例将当前目录的 music.mp3 切割为 1.mp3(30000字节) 和 2.mp3(剩余部分)
Private Sub cmdCut_Click()
Dim bytData() As Byte
bytData = ReadFile(App.Path & "\music.mp3", 1, 30000)
Call WriteFile(App.Path & "\1.mp3", bytData)
bytData = ReadFile(App.Path & "\music.mp3", 30001)
Call WriteFile(App.Path & "\2.mp3", bytData)
End Sub

Private Function ReadFile(ByVal strFileName As String, Optional ByVal lng