关于字符串和数组的一些问题
看到一段代码如下
//接收头一批数据
var count = socket.Receive(receiveBufferBytes);
//转化成string
var getString = Encoding.Default.GetString(receiveBufferBytes);
//创建文件流
FileStream fs = new FileStream(@"d:\\Test.html", FileMode.OpenOrCreate);
//创建缓存流
BufferedStream bs = new BufferedStream(fs);
using (fs)
{
using (bs)
{
byte[] finalContent = Encoding.Default.GetBytes(getString.ToCharArray());
//将头一批数据写入本地硬盘
bs.Write(finalContent, 0, finalContent.Length);
//循环通过socket接收数据
while (count > 0)
{
count = socket.Receive(receiveBufferBytes, receiveBufferBytes.Length, SocketFlags.None);
//直接将获取到的byte数据写入本地硬盘
bs.Write(receiveBufferBytes, 0, receiveBufferBytes.Length);
Console.WriteLine(Encoding.Default.GetString(receiveBufferBytes));
}
bs.Flush();
fs.Flush();
bs.Close();
fs.Close();
}
}
我的疑问是
为什么finalContent 不是直接Copy receiveBufferBytes 的count字节,而要使用Encoding进行两次转换呢?
------解决方案--------------------
这段代码的转换有点多余,浪费
------解决方案--------------------
所以你根据自己的情况做就是了,别人的不一定就是对的,他可能当时写的时候,就没想这些,所以让后人看起来极其费解,所以我们的代码才要重构