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

关于字符串和数组的一些问题
看到一段代码如下
  //接收头一批数据
  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进行两次转换呢?

------解决方案--------------------
这段代码的转换有点多余,浪费
------解决方案--------------------
所以你根据自己的情况做就是了,别人的不一定就是对的,他可能当时写的时候,就没想这些,所以让后人看起来极其费解,所以我们的代码才要重构