黑马程序员技术交流社区
标题:
StreamReader读取文件放在char[]中,用buffer的拷贝问题
[打印本页]
作者:
郭耀强
时间:
2012-4-24 10:57
标题:
StreamReader读取文件放在char[]中,用buffer的拷贝问题
FileStream fs = new FileStream("d:\\temp.txt",FileMode.Open);
StreamReader reader = new StreamReader(fs,Encoding.Default);
char[] buffer = new char[1024];
int length = reader.Read(buffer, 0, buffer.Length);
char[] data = new char[length];
Buffer.BlockCopy(buffer, 0, data, 0, length);
复制代码
这里data的实际长度就不是length,什么问题
作者:
郭耀强
时间:
2012-4-24 10:59
这个是图片
1.png
(10.63 KB, 下载次数: 45)
下载附件
2012-4-24 10:59 上传
作者:
z4226797
时间:
2012-4-24 11:24
奇怪了,我把你的代码原封不动的复制过来,并不会出现你说的情况啊
作者:
郭耀强
时间:
2012-4-24 11:42
你试着读一下文件,看看,读取出来的文件,少了一部分
作者:
︻◣㊣袏邊愛☆
时间:
2012-4-24 18:34
学习了谢谢swrrew
作者:
蒋敦方
时间:
2012-4-24 22:17
郭耀强 发表于 2012-4-24 10:59
这个是图片
你读取的是一个char类型的字符为:Length,而拷贝的buffer,是以string类型,拷入数组中的,一个string字符串占了相当于两个char类型的字符。应该是那类型问题。试试把char类型换成string类型的数组试试
作者:
郭耀强
时间:
2012-4-25 00:54
首先StreamReader读取数据需要的类型是char[]类型,所以我用一个char[]类型的数组来接收,其次,应为接收的这个数组长度并不是流的实际长度,所以我又定义了另外一个char[]数组,把实际的流的数组填充到这个数组中,过程中我用了Buffer.BlockCopy()方法来转换,但把接收数据的数组转换到实际数据的数组中,出现了错误,现在是转换过来的数据少了,就转换了34个char字符,还有35个都是用\0填充了,你上述的意思我不明白,举个例子吧
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2