日期:2014-05-18  浏览次数:20841 次

c# 文件序列化讨论
如题,请问音频、视频文件序列化该怎么操作呢?还有,有没有可能实现,我把多个文件(有音频、视频和图片等类型)序列化打包为一个文件,传到其他地方,再反序列化,还原之前的多个文件?
谢谢大家

------解决方案--------------------
这是很不好的,不得已才应该“序列化”。如果你要通讯,可以将大二进制数据使用短连接通讯方式传送,例如http的get、put和post就是短连接的,或者udp,或者是短连接tcp通讯。

对音频、视频文件你都敢“序列化”,实在是奢侈啊。
------解决方案--------------------
你可以试着自己构建逻辑,将多个视频或音频二进制码按一定顺序排列,结构体只反映这个二进制流中的文件对应位置逻辑,就像sp1234说的,真实数据采用短连接传输,你端那边就按照先前接受的结构体逻辑进行分解
------解决方案--------------------
音频视频序化是没有问题的。不过序列化会带来两个不良后果,一是文件会变大,二是增加系统开销,如果想把文件打包成自己的文件格式,可以这样做,简单做法直接改后缀名,另外一种办法是给自己的数据加层壳,用的时候把壳去掉即可。加壳有复杂办法也有简单办法,最简单的就是在数据的某个地方加一些自己的认证信息(一般情况是加在文件头部,比如在文件的头部加入十几个字节的认证信息),等自己打开数据的时候去掉这部分信息就可以正常使用了。当然这些方法保密级别不是太高,如果需要更高级别的加密等级可以直接使用现成的加壳工具对整个数据都进行加密。
------解决方案--------------------
你说的这些,它们本来是压缩文件格式的二进制文件,而且绝对是非常高的压缩率,你还要序列化什么啊,它们本来就是已经“序列化”过了的。

如果你要加密的话,随便用个什么字节密钥把它们的字节挨个异或一下。传到目标地以后再异或回来。
不过这些完全没必要。因为安全性不是这样解决的。传输安全性一般在是在网间协议中解决的。
------解决方案--------------------
其实序列化还是完全没有问题的,但是需要注意的是,在写序列化文件的时候,应用程序如果一旦退出或者其他中断操作,都会导致序列化文件的丢失,这一点不是很好,如果不担心这个问题的话,其实是么有问题的。