日期:2014-05-17  浏览次数:20787 次

C# 合并任意两个文件成一个文件保存到本地 然后在将他们拆分成原来的两个文件保存到本地
原帖在此http://bbs.csdn.net/topics/320038387...只不过是把本件保存到内存里面。我想要达到的效果是两个文件合并保存到本地,然后再把合并文件拆分开来保存到本地去...

------解决方案--------------------
关键点在合并之后怎么拆开,所以要在合并文件里留标记,到时候根据标记进行拆分
------解决方案--------------------
 //把文件读进流,保存到集合里面
            IList<MemoryStream> list = new List<MemoryStream>();
            MemoryStream Ms1 = new MemoryStream(File.ReadAllBytes("D:\\1.dat"));
            MemoryStream Ms2 = new MemoryStream(File.ReadAllBytes("D:\\2.dat"));
            list.Add(Ms1);
            list.Add(Ms2);

            //序列化保存到本地
            FileStream fs = new FileStream("D:\\3.dat", FileMode.Create);
            BinaryFormatter bf = new BinaryFormatter();
            bf.Serialize(fs, list);
            fs.Close();

            //反序列化拿到文件集合
            FileStream fs = new FileStream("D:\\3.dat", FileMode.Open);
            BinaryFormatter bf =new BinaryFormatter();
            IList<MemoryStream> Ms = (IList<MemoryStream>)bf.Deserialize(fs);            

------解决方案--------------------
需要这么麻烦么?先定义一下合并后的文件格式,比如前1k用来做描述文件,把两个文件的大小和合并前文件名记在里面,然后从1k以后开始写文件,写完一个再写一个。

拆分的时候把前1k拿出来,读取出文件名和文件大小,然后按这个大小读取,最后保存成两个文件就行了。