首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > C# >

关于byte[] buffer = new byte[1024];的一个小疑点

2013-07-25 
关于byte[] buffer new byte[1024]的一个小问题byte[] buffer new byte[1024]buffer Encoding.UTF

关于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);

热点排行