C#两个byte数组合并后,数据丢失
有byte数组 data1,data2,data3 ,
写该程序的目的是把 data1 和 data2 合并到data3中。
可是合并后data3中只有data1的数据。有哪位大牛帮帮忙!!!
byte[] data3 = new byte[data1.Length + data2.Length];
Stream s = new MemoryStream();
s.Write(data1, 0, data1.Length);
s.Write(data2, 0, data2.Length);
s.Position = 0;
int r = s.Read(data3, 0, data3.Length);
Stream s = new MemoryStream(); s.Write(data1, 0, data1.Length); s.Write(data2, 0, data2.Length); byte[] data3 = s.ToArray();写入字节是从流的当前位置开始的,这个方法的第二个参数指定的是数组中作为开始写入位置的第一个字节的偏移量,并不是流的位置。。。并不会覆盖
不知道你data1和data2是如何而来的,如果这两个变量没获取正确,data3就别想正确。
另外既然你是要合并文件,那么就不该这么做,有更好的做法:
C# code?FileStream fs1 = new FileStream("", FileMode.Open); FileStream fs2 = new FileStream("", FileMode.Open); FileStream fs3 = new FileStream("", FileMode.Create); byte[] buffer = new byte[4096]; int count = 0; while ((count = fs1.Read(buffer, 0, 4096)) > 0) { fs3.Write(buffer, 0, count); } while ((count = fs2.Read(buffer, 0, 4096)) > 0) { fs3.Write(buffer, 0, count); } fs1.Close(); fs2.Close(); fs3.Close();
将Word文件另存为rtf格式就可以直接合并了,rtf格式是可以任意添加的开放格式,我们的richtextbox控件就是用的那个格式。