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

关于byte[] buffer = new byte[1024];的一个小问题

byte[] buffer = new byte[1024];
buffer = Encoding.UTF8.GetBytes(fileName);//fileName是string类型

我定义的buffer大小是1024 ,为什么在赋值之后就成了fileName的大小了呢。
这导致我之后的read.Read(buffer, 0, 1024);也出现越界的情况。请问怎么解决?原因是什么?

------解决方案--------------------
 FileStream fs = new FileStream("xxx", FileMode.Open);//xxx为文件路径
            byte[] buffer = new byte[fs.Length];
            fs.Write(buffer, 0, buffer.Length);

------解决方案--------------------
第一行代码为buffer分配了1024字节的数组,第二行又为buffer重新分配了filename长度字节数组,这两行代码为buffer分配的内存是没有关系的,而且事实上第一行的初始化工作是画蛇添足的。

代码可以这样写:


byte[] buffer;
buffer = Encoding.UTF8.GetBytes(fileName);//fileName是string类型
// ...
read.Read(buffer, 0, buffer.Length);