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